JAX-WS开发webservice示例详解
2013-08-01 15:06
387 查看
概述
实验环境
服务端的实现
客户端的实现
[一]、概述
JavaAPIforXMLWebServices(JAX-WS)是Java程序设计语言一个用来创建Web服务的API。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(serviceendpointinterface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
当然JAX-WS也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
JAX-WS2.0(JSR224)是Sun新的webservices协议栈,是一个完全基于标准的实现。在binding层,使用的是the
JavaArchitectureforXMLBinding(JAXB,JSR222),在parsing层,使用的是the
StreamingAPIforXML(StAX,JSR173),同时它还完全支持schema规范。
JAX-WS与JAX-RPC的区别可参见:http://java.sun.com/xml/faq.html#JAX-WS-and-JAX-RPC-difference
JAX-WS一些参考资料:
JAX-RPC2.0renamed
toJAX-WS2.0
The
JavawebserviceTutorial
javax.jws.WebService
[二]、实验环境
javaversion“1.6.0_18″、Eclipse3.7
maven构建项目:mvnarchetype:create-DgroupId=com.micmiu.jaxws.demo-DartifactId=jaxws-demo-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false
[三]、服务端的实现
1.最基本的实例
编写接口代码:HelloService.java
实现接口并添加webservice注释:HelloServiceImpl.java
编写服务端发布代码:ServerStart.java
运行ServerStart,日志如下:
浏览器打开:http://localhost:8082/HelloService?wsdl回车显示如下:
可见服务端已经发布成功。
运用JDK自动的命令:wsgen生成wsdl文件和异常处理的相关类
ps:如果webservice中有异常声明,必须用wsgen生成常处理的相关类之后,才能发布。
按win+R键,输入cmd回车进入命令行界面,切换到target下创建目录ws,在执行如下命令:
bin->存放生成的class文件
src->存放生成的源代码文件
wsdl->存放生成的wsdl文件
再执行如下命令:
生成后的目录如下:
2.@WebService指定endpointInterface实例
修改接口代码:HelloService.java
修改接口实现类:HelloServiceImpl.java
运行ServerStart启动程序,可通过运行日志和浏览器访问wsdl文件进行验证。
[四]、客户端的实现
1.wsimport生成客户端
按win+R键,输入cmd回车进入dos,切到target目录,然后创建目录:client、client\bin、client\src
在target目录下运行如下命令回车即可生成客户端文件:
生成源文件目录结构如下:
2.编写客户端测试程序:HelloClient.java
运行测试程序,日志如下:
可见客户端调用成功。
实验环境
服务端的实现
客户端的实现
[一]、概述
JavaAPIforXMLWebServices(JAX-WS)是Java程序设计语言一个用来创建Web服务的API。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(serviceendpointinterface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
当然JAX-WS也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
JAX-WS2.0(
JavaArchitectureforXMLBinding(JAXB,
StreamingAPIforXML(StAX,
JAX-WS与JAX-RPC的区别可参见:
JAX-WS一些参考资料:
JAX-RPC2.0renamed
toJAX-WS2.0
The
JavawebserviceTutorial
[二]、实验环境
javaversion“1.6.0_18″、Eclipse3.7
maven构建项目:mvnarchetype:create-DgroupId=com.micmiu.jaxws.demo-DartifactId=jaxws-demo-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false
[三]、服务端的实现
1.最基本的实例
编写接口代码:HelloService.java
1 | package com.micmiu.jaxws.demo; |
2 |
3 | /** |
4 | * |
5 | * |
6 | * |
7 | */ |
8 | public interface HelloService { |
9 | String sayHello(StringuserName); |
10 | } |
1 | package com.micmiu.jaxws.demo.impl; |
2 |
3 | import javax.jws.WebMethod; |
4 | import javax.jws.WebParam; |
5 | import javax.jws.WebService; |
6 | import javax.jws.soap.SOAPBinding; |
7 |
8 | import com.micmiu.jaxws.demo.HelloService; |
9 |
10 | /** |
11 | * |
12 | * |
13 | * |
14 | */ |
15 | @WebService () |
16 | //默认SOAPBinding |
17 | @SOAPBinding () |
18 | public class HelloServiceImpl implements HelloService { |
19 |
20 | @WebMethod |
21 | public String sayHello( @WebParam (name "userName" ) |
22 | return "hi," + " ; |
23 | } |
24 |
25 | } |
1 | package com.micmiu.jaxws.demo; |
2 |
3 | import javax.xml.ws.Endpoint; |
4 |
5 | import com.micmiu.jaxws.demo.impl.HelloServiceImpl; |
6 |
7 | /** |
8 | * |
9 | * |
10 | * |
11 | */ |
12 | public class ServerStart { |
13 |
14 | /** |
15 | * |
16 | */ |
17 | public static void main(String[] |
18 | System.out.println( "start ); |
19 | HelloService new HelloServiceImpl(); |
20 | Endpoint.publish( " , service); |
21 | System.out.println( "publish ); |
22 | } |
23 |
24 | } |
startpublishjax-ws...
2012-7-1210:56:41com.sun.xml.internal.ws.model.RuntimeModelergetRequestWrapperClass
信息:DynamicallycreatingrequestwrapperClasscom.micmiu.jaxws.demo.impl.jaxws.SayHello
2012-7-1210:56:42com.sun.xml.internal.ws.model.RuntimeModelergetResponseWrapperClass
信息:DynamicallycreatingresponsewrapperbeanClasscom.micmiu.jaxws.demo.impl.jaxws.SayHelloResponse
publishwebservicesuccessful
浏览器打开:http://localhost:8082/HelloService?wsdl回车显示如下:
可见服务端已经发布成功。
运用JDK自动的命令:wsgen生成wsdl文件和异常处理的相关类
ps:如果webservice中有异常声明,必须用wsgen生成常处理的相关类之后,才能发布。
按win+R键,输入cmd回车进入命令行界面,切换到target下创建目录ws,在执行如下命令:
1 | mkdir ws\bin |
src->存放生成的源代码文件
wsdl->存放生成的wsdl文件
再执行如下命令:
1 | wsgen - cp .;classes/ |
D:\workspace_dev\jaxws-demo\target>tree/Fws
卷work的文件夹PATH列表
卷序列号为2AF7-9BD9
D:\WORKSPACE_DEV\JAXWS-DEMO\TARGET\WS
├─bin
│└─com
│└─micmiu
│└─jaxws
│└─demo
│└─impl
│└─jaxws
│SayHello.class
│SayHelloResponse.class
│
├─src
│└─com
│└─micmiu
│└─jaxws
│└─demo
│└─impl
│└─jaxws
│SayHello.java
│SayHelloResponse.java
│
└─wsdl
HelloServiceImplService.wsdl
HelloServiceImplService_schema1.xsd
2.@WebService指定endpointInterface实例
修改接口代码:HelloService.java
1 | package com.micmiu.jaxws.demo; |
2 |
3 | import javax.jws.WebMethod; |
4 | import javax.jws.WebParam; |
5 | import javax.jws.WebService; |
6 | import javax.jws.soap.SOAPBinding; |
7 | import javax.jws.soap.SOAPBinding.Style; |
8 |
9 | /** |
10 | * |
11 | * |
12 | * |
13 | */ |
14 | @WebService |
15 | @SOAPBinding (style |
16 | public interface HelloService { |
17 | @WebMethod |
18 | String sayHello( @WebParam (name "userName" ) |
19 | } |
1 | package com.micmiu.jaxws.demo.impl; |
2 |
3 | import javax.jws.WebService; |
4 |
5 | import com.micmiu.jaxws.demo.HelloService; |
6 |
7 | /** |
8 | * |
9 | * |
10 | * |
11 | */ |
12 | @WebService (endpointInterface "com.micmiu.jaxws.demo.HelloService" ) |
13 | public class HelloServiceImpl implements HelloService { |
14 | public String sayHello(StringuserName){ |
15 | return "hi," + " ; |
16 | } |
17 |
18 | } |
[四]、客户端的实现
1.wsimport生成客户端
按win+R键,输入cmd回车进入dos,切到target目录,然后创建目录:client、client\bin、client\src
在target目录下运行如下命令回车即可生成客户端文件:
1 | wsimport |
D:\WORKSPACE_DEV\JAXWS-DEMO\TARGET\CLIENT\SRC └─com └─micmiu └─jaxws └─client HelloServiceImpl.java HelloServiceImplService.java ObjectFactory.java package-info.java SayHello.java SayHelloResponse.java
2.编写客户端测试程序:HelloClient.java
1 | package com.micmiu.jaxws.client; |
2 |
3 | /** |
4 | * |
5 | * |
6 | */ |
7 | public class HelloClient { |
8 |
9 | /** |
10 | * |
11 | */ |
12 | public static void main(String[] |
13 | HelloServiceImplService new HelloServiceImplService(); |
14 | HelloServiceImpl |
15 | System.out.println( "start ); |
16 | System.out.println( "send ); |
17 | System.out.println(hello.sayHello( "Michael" )); |
18 | System.out.println( "test ); |
19 | } |
20 |
21 | } |
startwebserviceclient...
sendMichaeltoserver
hi,Michaelwelcomtowww.micmiu.com
testclientend.
可见客户端调用成功。
相关文章推荐
- JAX-WS开发webservice示例详解
- JAX-WS开发webservice接口的注解的应用和注解的详解
- JAX-WS开发webservice接口的注解的应用和注解的详解
- JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- myeclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- 译文:myeclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- JAX-WS开发webservice接口的注解的应用和注解的详解
- MyEclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- myeclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- JAX-WS开发webservice接口的注解的应用和注解的详解
- MyEclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- MyEclipse6.5上基于JAX-WS开发Webservice(中文示例)
- JAX-WS开发webservice接口的注解的应用和注解的详解
- JAX-WS开发webservice接口的注解的应用和注解的详解