[一]、概述
Java API for XML Web Services (JAX-WS)是Java程序设计语言一个用来创建Web服务的API。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
JAX-WS2.0 (JSR 224 )是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222 ),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173 ),同时它还完全支持schema规范。
JAX-WS与JAX-RPC的区别 可参见:http://java.sun.com/xml/faq.html#JAX-WS-and-JAX-RPC-difference
JAX-WS一些参考资料:
- JAX-RPC 2.0 renamed to JAX-WS 2.0
- The Java web service Tutorial
- javax.jws.WebService
[二]、实验环境
- java version “1.6.0_18″、Eclipse3.7
- maven构建项目:mvn archetype:create -DgroupId=com.micmiu.jaxws.demo -DartifactId=jaxws-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
[三]、服务端的实现
1.最基本的实例
编写接口代码:HelloService.java
1
|
package com.micmiu.jaxws.demo;
|
6
* @author Michael
|
8
public interface HelloService {
|
9
|
String sayHello(String userName);
|
10
}
|
实现接口并添加webservice注释:HelloServiceImpl.java
com.micmiu.jaxws.demo.impl;
import javax.jws.WebMethod;
com.micmiu.jaxws.demo.HelloService;
12
*
|
14
*/
|
16
|
17
|
@SOAPBinding18
|
class HelloServiceImpl implements 19
|
20
|
@WebMethod
|
21
|
public String sayHello( @WebParam (name = "userName" ) String userName) {
|
22
return "hi," + userName + " welcom to www.micmiu.com" ;
|
24
25
|
编写服务端发布代码:ServerStart.java
javax.xml.ws.Endpoint;
|
com.micmiu.jaxws.demo.impl.HelloServiceImpl;
ServerStart {
static void
main(String[] args) {
System.out.println(
"start publish jax-ws ..."
);
HelloService service = new HelloServiceImpl();
|
"publish webservice successful");
|
}
运行ServerStart,日志如下:
start publish jax-ws ...
2012-7-12 10:56:41 com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
信息: Dynamically creating request wrapper Class com.micmiu.jaxws.demo.impl.jaxws.SayHello
2012-7-12 10:56:42 com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
信息: Dynamically creating response wrapper bean Class com.micmiu.jaxws.demo.impl.jaxws.SayHelloResponse
publish webservice successful
浏览器打开:http://localhost:8082/HelloService?wsdl 回车显示如下:

可见服务端已经发布成功。
运用JDK自动的命令: wsgen 生成wsdl文件和异常处理的相关类
ps:如果webservice中有异常声明,必须用wsgen生成常处理的相关类之后,才能发布。
按win+R键,输入cmd回车进入命令行界面,切换到target下创建目录ws,在执行如下命令:
mkdir ws\bin ws\src ws\wsdl
|