`

jax-ws webservice编程

    博客分类:
  • java
阅读更多

1.理解JAX-WS

1.1JAX-WS概述

JAX-WS2.0 的全称为 Java API for XML-Based Webservices (JAX-WS) 2.0。JAX-WS 2.0 是对 JAX-RPC 1.0 规范的扩展,是 JAX-RPC 1.1 的后续版本, JAX-RPC 2.0 标准发布不久后便被重新命名为 JAX-WS 2.0。 JAX-WS 2.0 是面向 Java 5 的开发 Web services 的最新编程标准,它提供了新的编程模型和对以往的 JAX-RPC 方式的 Web services 进行了增强。 JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XMLBinding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。

1.2JAX-WS 2.1特性

支持SOAP 1.1(默认)、1.2

支持XML/HTTP Binding

支持WS-Addressing

支持document/literal样式

支持WS-I Basic Profile 1.1

支持消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)

 

2.准备工作

(1) jdk 1.6,j2ee-eclipse

(2) JAXWS2.2.7-20120813(http://jax-ws.java.net/),下载后解压。

 

3.在eclipse中新建web工程

在工程下新建目录wssrc,wsdl,build,与src目录平级

4.开始书写第一个web service

 

package ethan.webservice;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;

import ethan.webservice.bean.User;

@WebService
public interface IHello {
	@WebMethod
	public List<User> sayHello(String user);
}

 

 

package ethan.webservice.impl;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import ethan.webservice.IHello;
import ethan.webservice.bean.User;

@WebService(endpointInterface = "ethan.webservice.IHello", 
portName = "HelloServicePort", 
serviceName = "HelloService", 
targetNamespace = "http://www.ethanSKY.com/webservice/hello")
public class HelloImpl implements IHello {

	@Override
	public List<User> sayHello(String user) {
		System.out.println("=================start==================");
		List<User> users = new ArrayList<User>();
		User u1 = new User();
		u1.setId("1");
		u1.setName("name1");
		User u2 = new User();
		u2.setId("2");
		u2.setName("name2");
		users.add(u1);
		users.add(u2);
		System.out.println("2:"+user);
		System.out.println("=================end==================");
		return users;
	}

}

 注意:

 

@WebService

注释在了Class之上,这告诉了JAXWS,此类为Webservice。

@WebMethod

注释在了public方法上,这告诉了JAXWS,此方法为soap方法。

 

5.通过Java类编译Webservice

JAX-WS 2.0 有两种开发过程:自顶向下和自底向上。自顶向下方式指通过一个 WSDL 文件来创建Web Service,自底向上是从 Java 类出发创建 Web Service。两种开发过程最终形成的文件包括:

1.SEI。一个SEI对应WSDL中WebService的一个port,在Java中是一个Java接口。

2.SEI实现类。

3.WSDL和XSD文件。

结合公司内项目的特点,我们更多的是碰到以下两种情况:

1.  Onsite要我们做一个Webservice或者是客户要求我们提供Webservice接口;

2.  Onsite已经有一个Webservice了,现在要我们做客户端集成。

 

因此,我们选用Server端通过Java Class生成webservice,而客户端通过wsdl生成Java调用类的做法。

 

JAXWS为我们提供了两个工具:

 

(1)wsgen

主要用于Server端通过Java类编译成Webservice及相关的wsdl文件

(2)wsimport

主要用于Client端(调用端)通过wsdl编译出调用Server端的Java文件

 

 

我们就来生成一下上面的这个Hello,打开命令行工具,输入如下命令:

wsgen -cp /home/ethan/workspace/work/jax-ws-server/WebContent/WEB-INF/classes ethan.webservice.impl.HelloImpl -wsdl -s wssrc -r wsdl

注:

 

-wsdl参数代表生成webservice

- s参数代表生成的.java文件置于何处

-d 参数代表生成的编译class文件置于何处(这个可以忽略,我们利用eclipse编译)

-r 参数代表生成的.wsdl文件与.xsd文件生成在何处

-cp参数代表classpath,即HelloImpl.class的所在

 

 

生成的java文件在wssrc目录下,将其拷贝到src目录。

同时在wsdl目录会生成四个文件,两个是wsdl文件两个是xsd文件。

 

6.部署webservice

 

在工程的WEB-INF目录下建立“sun-jaxws.xml”文件,内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
    version="2.0">
    <endpoint name="HelloService" implementation="ethan.webservice.impl.HelloImpl"
        url-pattern="/HelloService" />
</endpoints>

 修改web.xml文件,如下:

 

 

<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>

<servlet>
        <servlet-name>HelloService</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
        <servlet-name>HelloService</servlet-name>
        <url-pattern>/HelloService</url-pattern>
</servlet-mapping>

 将JAXWS2.2.7-20120813中lib目录下的jar包导入工程。

 

 

将内容部署到应用服务器中,启动应用服务器,访问:http://localhost:8080/jax-ws-server/HelloService?wsdl,出现内容即代表完成服务端部署。

 

 

7.客户端开发

 

利用wsimport生成客户端

在eclipse中新建java工程,在命令行输入:wsimport -keep -d bin -s src wsdl/HelloService.wsdl

生成的HelloService.java中

            将url = new URL(baseUrl, "file:/home/ethan/workspace/work/jax-ws-client/wsdl/HelloService.wsdl");

改为:url = new URL(baseUrl, "http://localhost:8080/jax-ws-server/HelloService");

 

8.书写测试类:

public class HelloServiceTest {
	public static void main(String args[]){
		HelloService service = new HelloService();
        IHello port = service.getHelloServicePort();
        List<User> users = port.open("aaa");
        System.out.println(users.size());
	}
}

 大功告成!

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jax-ws webservice简单demo

    在这个"jax-ws webservice简单demo"中,我们将探讨JAX-WS的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...

    webservice之jax-ws

    【标题】:Web服务之Java API for XML Web Services (JAX-WS) 【内容详解】 JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的...

    JAX-WS2.0 API

    **正文** JAX-WS(Java API for XML Web Services...总之,JAX-WS 2.0 API是Java平台开发SOAP Web服务的重要工具,通过其提供的丰富特性和简洁的编程模型,简化了Web服务的开发和使用,促进了分布式系统的构建和协作。

    jax-ws创建webservice

    jax-ws允许开发人员通过简单的编程模型来实现基于SOAP的Web服务,从而简化了Web服务的开发流程。 在MyEclipse环境中创建jax-ws Web服务的过程主要包括以下几个步骤: 1. **创建Web服务接口**:首先,你需要定义一...

    JAX-WS低版本

    与早期的JAX-RPC相比,JAX-WS更加强调面向对象和类型安全,并且提供了更直观的编程模型。 2. **Apache Tomcat**:Tomcat是一款开源的Java Servlet容器,用于部署和运行Java Web应用。在这个场景中,Tomcat将作为Web...

    jax-ws用户指南 pdf版

    本用户指南详细介绍了 JAX-WS 2.2 版本的功能、编程模型以及如何使用该 API 来构建 Web 服务应用。 #### 文档结构 - **概述**:简要介绍 JAX-WS 的功能。 - **文档**:提供了指向 JAX-WS 相关文档的链接。 - **软件...

    JAX-WS 实现WebService发布

    总结来说,JAX-WS通过简单的Java编程模型实现了Web服务的发布和调用,极大地简化了Web服务的开发流程。通过定义接口、实现服务、部署服务和生成客户端存根,开发者可以快速地构建基于SOAP的Web服务系统。在实际项目...

    设计与开发 JAX-WS 2.0 Web 服务

    - **添加注解**:在服务接口和实现类上添加必要的JAX-WS注解,例如`@WebService`和`@WebMethod`等,用以指导工具生成相应的WSDL文件和其他元数据。 3. **示例:订单处理Web服务** - **服务接口定义**:创建一个...

    Spring3_JAX-WS

    在Spring框架中集成JAX-WS,可以利用Spring的依赖注入(DI,Dependency Injection)和AOP(面向切面编程)特性,提高代码的可维护性和可测试性。例如,服务实现类可以作为Spring的bean,这样就可以注入其他依赖,如...

    JAX-WS自学笔记

    JAX-WS 2.0引入了一种新的编程模型,使得开发Web服务更为简洁。它利用注解(Annotations)来简化服务接口的定义,通过JAXB进行数据绑定,将Java对象和XML消息自动转换。此外,JAX-WS还支持SOAP消息头(SOAP Headers...

    gsoap客户端Jax-ws服务端实例

    定义服务接口,使用JAX-WS注解如`@WebService`和`@SOAPBinding`,并实现相应的业务逻辑。 2. **部署服务**:将服务部署到Tomcat或其他兼容的Java应用服务器上,确保服务可用并可以通过HTTP/HTTPS访问。 3. **生成...

    上传一个基于Jax-ws的WebService

    总的来说,基于JAX-WS的Web服务开发涉及Java编程、SOAP协议、WSDL描述、服务部署和客户端调用等多个方面,是Java开发者掌握Web服务技术的重要一环。通过学习和实践,开发者可以更好地理解和利用这一强大工具来构建...

    JAX-WS2.0规范

    通过简化编程模型、增强互操作性和安全性,JAX-WS 2.0 成为了构建现代 Web 服务不可或缺的一部分。对于那些希望利用 Java 技术栈开发高质量 Web 服务的应用程序而言,JAX-WS 2.0 绝对是首选解决方案之一。

    Jax-WS的配置方式

    Jax-WS允许开发者使用Java编程语言来定义和实现Web服务接口。它包括以下组件: - **Service端点接口(SEI)**:定义了服务提供的操作。 - **服务实现类**:实现了SEI,提供了业务逻辑。 - **WSDL(Web Services ...

    jax-ws-spring

    【CXF_Spring.part1.rar】和【CXF_Spring源码.rar】文件可能涉及Apache CXF,这是一个流行的开源框架,它扩展了JAX-WS,提供更高级的功能,如WS-*协议支持、基于注解的编程模型、以及与Spring的深度集成。...

    JAX-WS_Java API for XML Web Services

    JAX-WS允许开发者使用Java编程语言来构建、部署和消费XML Web服务,它提供了基于WSDL(Web Services Description Language)的编程模型。 **一、JAX-WS的核心组件** 1. **SOAP绑定框架(SOAP Binding Framework)*...

    JAX-WS之旅(二)

    学习JAX-WS不仅可以帮助我们掌握Web服务的开发,还能提升我们在分布式系统中的编程能力。随着云计算和微服务架构的普及,理解并熟练运用JAX-WS成为了Java开发者必备的技能之一。通过不断地实践和探索,我们能够更好...

    JAX-WS之旅(一)

    它取代了早期的JAX-RPC(Java API for XML-Based RPC),提供了更现代、更简洁的编程模型。JAX-WS允许开发者通过简单的注解将Java方法映射到Web服务操作,极大地简化了Web服务的开发。 **2. JAX-WS的核心组件** - *...

    jax-ws tuto

    JAX-WS采用了分层编程模型,该模型包含两个主要层次:强类型层和消息层。 - **强类型层**:基于注解的类。这一层利用注解来简化开发过程,使得开发更为直观,工具支持更好,同时减少了生成类的数量。 - **消息层**...

Global site tag (gtag.js) - Google Analytics