JWS服务开发使用指南.docx
- 文档编号:2779364
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:24
- 大小:284.13KB
JWS服务开发使用指南.docx
《JWS服务开发使用指南.docx》由会员分享,可在线阅读,更多相关《JWS服务开发使用指南.docx(24页珍藏版)》请在冰豆网上搜索。
JWS服务开发使用指南
1.概述
1.1.目的
本文档的目的是提供JAX-WS规范的WebService服务开发和使用指南,在服务开开发和使用过程中介绍相关事项,提供一些一般性的原则约束。
1.2.依赖条件
1、从JDK5开始,JAVA为WebService提供了Jax-ws(更多关于JAX-WS的信息参考“了解JAX-WS”章节)支持,所以使用该指南需要具备JAVA的JDK5版本
2、Servlet2.5,Jax-ws最终实现依赖Servlet2.5以上版本,Tomcat6.0、Weblogic10以上版本均支持该版本,主要你的web.xml文件中必须制定2.5版本
xmlversion="1.0"encoding="UTF-8"?
>
xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns="xmlns: web="xsi: schemaLocation="id="WebApp_ID"version="2.5"> …… 3、该指南默认将开发的服务部署在Weblogic10以上版本,对于Tomcat6.0以上的不完全J5EE容器,需要使用CXF来提供额外的WebService支撑功能。 2.开发WebService 2.1.WebService开发真的很简单 一个简单的WebService示例如下: 1、首先定义一个HelloServivce接口: packagegov.szpl.ws.hello; importjavax.jws.WebService; @WebService publicinterfaceHelloService{ /** *最简单的sayHello方法. *@return返回: "Hello{name}! ! ! " */ publicStringsayHello(Stringname); } 注意: 引入了@WebService来注释HelloService接口,它属于JAX-WS 2、定义HelloService的实现类 packagegov.szpl.ws.hello; importjavax.jws.WebService; @WebService( serviceName="HelloService", endpointInterface="gov.szpl.ws.hello.HelloService" ) publicclassHelloServiceImplimplementsHelloService{ publicStringsayHello(Stringname){ // return"Hello"+name+"! ! ! "; } } 注意: HelloServiceImpl类使用再次用了@WebService声明,并添加服务名和端点接口来描述即将发布的WebService属性。 3、不要紧张,完了,就这么多。 如果上面的接口和类是放到DynamicWeb工程中,该工程导出为War包,输出到Weblogic10自动部署文件夹,即可你就成功发布了HelloWebService这个服务了。 什么,不需要依赖任何Jar包吗? 不需要不是更好吗? Weblogic老板在后台把所有的事情自动张罗好了。 那Weblogic都做了些啥? 扫描WEB-INFO/classes目录类,发现有@WebService修饰了类,启动JAX-WS对于的模块,动态创建WSDL文件,并将其发布为WebService 可以部署在Tomcat吗? YES,这个可以有,不过需要添加CXF的支持,CXF是个什么东东呢,他的前身是XFire,现在是一个非常广泛使用的WebService框架。 2.2.渐进演化 2.2.1.Wsdl中参数和返回值描述为arg0、arg1 后台自动创建的WSDL中默认情况下,参数均是arg0,arg2…….确实令人难堪,即使是用户Eclipse创建客户程序,接口也非常不可读,那么怎么处理这个问题呢,JAX-WS已经帮你想好了这一问题的解决方案,就是使用@WebParam注解来标识参数。 还是以HelloService来演示,HelloServiceImpl服务接口实现类不需要任何改动,这也充分体现了面向接口编程的思想,也说明了为什么需要在服务实现类中指定endpointInterface的原因。 packagegov.szpl.ws.hello; importjavax.jws.WebParam; importjavax.jws.WebService; @WebService publicinterfaceHelloService{ /** *最简单的sayHello方法. *@return返回: "Hello{name}! ! ! " */ publicStringsayHello(@WebParam(name="name")Stringname); } 重新发布一次,试一试,注意到变化了吗? 参数名称已经发生变化了,我所做的仅仅是参数前面多加了@WebParam(name="name")这用一小段 2.2.2.Web方法中的参数和返回值是对象 1、作为参数的对象,仅仅是一个普通JAVA类(POJO) packagegov.szpl.organization.dept; publicclassDept{ privateintdeptId; privateStringdeptName; privateStringcode; privateStringburea; publicintgetDeptId(){ returndeptId; } publicvoidsetDeptId(intdeptId){ this.deptId=deptId; } publicStringgetDeptName(){ returndeptName; } publicvoidsetDeptName(StringdeptName){ this.deptName=deptName; } publicStringgetCode(){ returncode; } publicvoidsetCode(Stringcode){ this.code=code; } publicStringgetBurea(){ returnburea; } publicvoidsetBurea(Stringburea){ this.burea=burea; } } 不过这里还是要强调一下的是,关于Web方法的参数问题,可以支持基本类型(int,long…),基本类型的包装类型(Integer,Long…….)String、List等,但不可用使用Map,因为Map类型太不确定了,会抛出异常的。 2、定义服务接口 packagegov.szpl.organization.dept; importjavax.jws.WebParam; importjavax.jws.WebService; @WebService publicinterfaceDeptService{ publicStringgetDeptCode(@WebParam(name="deptId")intdeptId); publicStringgetDeptCodeByDept(@WebParam(name="dept")Deptdept); publicDeptgetDept(@WebParam(name="deptId")intdeptId); } 关于@WebService和@WebParam前面已经介绍过,你懂的。 3、定义服务接口实现 packagegov.szpl.organization.dept; importjavax.jws.WebService; @WebService(endpointInterface="gov.szpl.organization.dept.DeptService",serviceName="DeptService") publicclassDeptServiceImplimplementsDeptService{ publicStringgetDeptCode(intdeptId){ //TODOAuto-generatedmethodstub return"deptCodefordpetId("+String.valueOf(deptId)+")isx1"; } publicStringgetDeptCodeByDept(Deptdept){ //TODOAuto-generatedmethodstub return"deptCodefordpetId("+String.valueOf(dept.getDeptId())+")isx2"; } publicDeptgetDept(intdeptId){ // Deptdept=newDept(); dept.setDeptId(deptId); dept.setDeptName("testdeptname"); returndept; } } Ok,搞定,打包部署,同样非常简单吧 2.2.3.如何出处理SOAPHeader 这一章节的内容相对高级一点,不过放心好了,理解了之后一点也不复杂,同样SoEasy 2.2.3.1.认识JAX-WSHandler packagejavax.xml.ws.handler; importjavax.xml.ws.ProtocolException; importjavax.xml.ws.handler.MessageContext; /**JAX-WS处理器接口 *@sinceJAX-WS2.0 **/ publicinterfaceHandler /** *可调用handleMessage方法进行普通的入站和出站消息处理。 *有关完整信息,请参阅JAX-WS规范中处理程序框架的描述。 *@paramcontext-消息上下文。 *@return指示处理程序是否应该继续处理当前消息。 *返回true表示继续处理。 *返回false表示停止处理。 */ publicbooleanhandleMessage(Ccontex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JWS 服务 开发 使用指南