JAX-WS开发webservice示例详解
? ? ? ? ?
[一]、概述 在服务器端,用户只需要通过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一些参考资料:
[二]、实验环境
[三]、服务端的实现 1.最基本的实例 编写接口代码:HelloService.java
4
|
? * blog?http://www.micmiu.com
|
5 | * |
7 | */ |
interface
?HelloService {
9 | ????String sayHello(String userName);
|
}
实现接口并添加webservice注释:HelloServiceImpl.java
javax.jws.WebMethod;
javax.jws.WebService; |
? |
/** |
11 | http://www.micmiu.com |
13 | * @author Michael |
15 | @WebService ()
|
//默认SOAPBinding style = Style.DOCUMENT
17 | @SOAPBinding18
|
class?HelloServiceImpl? implements ?19
|
20 | ????@WebMethod
|
21 | ????public ?String sayHello( @WebParam (name =? "userName" ) String userName) {
|
return
?"hi,"
?+ userName +?
" welcom to www.micmiu.com"
;
23 | } |
????????? * @param args
|
void
?main(String[] args) {
System.out.println(
"start publish jax-ws ..."
);
HelloService service =?new ?HelloServiceImpl();
|
"http://localhost:8082/HelloService"
,service);
"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 ?wsbin wssrc wswsdl
|