版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于JAX-WS开发
WebService2008-05-06基于JAX-WS设计开发WebServiceJAX-WS概述JAX-WS发展历史(JAX-WS2.0与JAX-RPC1.1的比较)如何基于JAX-WSAPI开发WebService(ApacheCXF基础)JAX-WS概述
什么是JAX-WS?为何使用JAX-WS?JAX-WS概述
JAX-WS(JavaAPIforXML-BasedWebServices)JAX-WS是Java社区(JCP)的工作成果(JSR224),它为客户机端和服务器端的WebService实现提供通用的应用程序编程接口(API)。通过采用一个面向Web服务的标准API,旨在帮助服务用户(客户机)和服务实现者获得最大程度的标准性和灵活性。JAX-WS发展历史WebService出现以来。首先是SOAP,但SOAP仅描述消息的情况,然后是WSDL,WSDL并不会告诉您如何使用Java™编写Web服务。在这种情况下,JAX-RPC1.0应运而生。经过数月使用之后,编写此规范的JavaCommunityProcess(JCP)人员认识到需要对其进行一些调整,调整的结果就是JAX-RPC1.1。该规范使用大约一年之后,JCP人员希望构建一个更好的版本:JAX-RPC2.0。其主要目标是与行业方向保持一致,但行业中不仅只使用RPCWeb服务,还使用面向消息的Web服务。因此从名称中去掉了“RPC”,取而代之的是“WS”(当然表示的是Web服务)。因此JAX-RPC1.1的后续版本是JAX-WS2.0——JavaAPIforXML-basedWebservices。JAX-WS2.0与JAX-RPC1.1的比较哪些内容保持不变?JAX-WS2.0仍然支持SOAP1.1overHTTP1.1,因此互操作性将不会受到影响。JAX-WS2.0仍然支持WSDL1.1,因此WSDL1.1的相关规范仍然适用。JAX-WS2.0与JAX-RPC1.1的比较区别和变化:SOAP1.2
JAX-RPC和JAX-WS都支持SOAP1.1。JAX-WS还支持SOAP1.2。XML/HTTP
WSDL1.1规范在HTTP绑定中定义,这意味着利用此规范可以在不使用SOAP的情况下通过HTTP发送XML消息。JAX-RPC忽略了HTTP绑定。而JAX-WS添加了对其的支持。WS-IBasicProfile
JAX-RPC支持WS-IBasicProfile(BP)V1.0,JAX-WS支持BP1.1。(WS-I即Web服务互操作性组织。)新Java功能JAX-RPC映射到Java1.4,JAX-WS映射到Java5.0。JAX-WS依赖于Java5.0中的很多新功能。JavaEE5是J2EE1.4的后续版本,添加了对JAX-WS的支持,但仍然支持JAX-RPC。JAX-WS2.0与JAX-RPC1.1的比较数据映射模型JAX-RPC具有自己的映射模型,此模型大约涵盖了所有模式类型中的90%。JAX-WS的数据映射模型是JAXB。JAXB可保证所有XML模式的映射。接口映射模型
JAX-WS的基本接口映射模型与JAX-RPC的区别并不大,不过二者之间存在以下差异:JAX-WS的模型使用新的Java5.0特性Annotations
。JAX-WS的模型引入了异步功能。动态编程模型JAX-WS的动态客户机模型与JAX-RPC的对应模型差别很大。很多更改都是为了认可行业需求:引入了面向消息的功能。引入了动态异步功能。JAX-WS还添加了动态服务器模型,而JAX-RPC则没有此模型。消息传输优化机制(MessageTransmissionOptimizationMechanism,MTOM)JAX-WS通过JAXB添加了对新附件规范MTOM的支持。基于JAX-WSAPI开发WebServiceJAX-WS两种开发方式JAX-WS客户端开发APIsJAX-WS服务端开发APIsJAX-WS两种开发方式
契约优先(WSDLFirst):从WSDL着手,生成Java类来实现服务。代码优先(JAVAFirst):从Java类着手,使用Annotation来生成WSDL文件和Java接口。契约优先(WSDLFirst)基于ApacheCXF实现JAX-WS2.0WebService的WSDLFirst开发模式ApacheCXF基础ApacheCXF基础ApacheCXF简介:
ApacheCXF:AnOpenSourceServiceFrameworkApacheCXF是一个Service框架,它简化了Service的创建,
实现了JAX-WS2.0规范,并通过了JAX-WS2.0TCK;
CXF和Spring无缝集成;ApacheCXF基础ApacheCXF功能特性支持多种标准支持
JAX-WS、
JAX-WSA、JSR-181和
SAAJ;支持
SOAP1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和
WS-Policy;支持
WSDL1.1、2.0;支持
MTOM;多种传输方式、Bindings、DataBindings和
FormatBindings:SOAP、REST/HTTP;DataBndings:目前支持
JAXB2.0、Aegis两种,默认是
JAXB2.0。XMLBeans、Castor和
JiBX数据绑定方式将在
CXF2.1版本中得到支持;格式(Format):XML、JSON;传输方式:HTTP、Servlet、JMS和
Jabber;可扩展的
API允许为
CXF增加其它的
Bindings,以能够支持其它的消息格式,比如:CSV和固定记录长度。ApacheCXF基础ApacheCXF功能特性灵活部署轻量级容器:可在
Tomcat或基于
Spring的容器中部署
Services;集成
JBI:可以在如
ServiceMix,OpenESBorPetals等等的
JBI容器中将它部署为一个服务引擎;集成
SCA:可以部署在如
Tuscany之类的
SCA容器中;集成
J2EE:可以在
J2EE应用服务器中部署
Services,比如:Geronimo、JOnAS、JBoss、WebSphereApplicationServer和
WebLogicApplicationServer,以及
Jetty和
Tomcat;独立的
Java客户端/服务器。支持多种编程语言全面支持
JAX-WS2.0客户端/服务器编程模型;支持
JAX-WS2.0synchronous、asynchronous和
one-wayAPI's;支持
JAX-WS2.0DynamicInvocationInterface(DII)API;支持
wrappedandnon-wrapped风格;支持
XMLmessagingAPI;支持
JavaScript和
ECMAScript4XML(E4X),客户端与服务端均支持;通过
Yoko支持
CORBA;通过
Tuscany支持
SCA;通过
ServiceMix支持
JBI;契约优先(WSDLFirst)完成WSDL文件示例:AccountManagerService.wsdlWSDL文件WSDL文件WSDL文件WSDL文件契约优先(WSDLFirst)利用ApacheCXF的WSDL2JAVA工具生成java类注意:环境变量path增加:%CXF_HOME%\bin输入命令:D:\workspace\wsdl>wsdl2java-client-dSrcDirAccountManagerService.wsdl契约优先(WSDLFirst)生成代码列表:契约优先(WSDLFirst)分析生成JAVA类根据生成PortType接口类编写具体服务实现类(Server端)根据生成的客户端binding测试类来测试具体服务契约优先(WSDLFirst)分析生成JAVA类1、根据WSDL中不同Name的Message节点,生成对应类型的Schema的类:CheckBalance.java,CheckBalanceResponse.javaWithdraw.java,WithdrawResponse.java示例:分析生成JAVA类2、根据WSDL中PortType节点,生成对应类型的JAVA类:示例:分析生成JAVA类
3、生成对象工厂类ObjectFactory.java和包信息类package-info.java契约优先(WSDLFirst)4、生成客户端访问服务的Service类AccountManagerService.java该类继承:javax.xml.ws.Service契约优先(WSDLFirst)5、根据WSDL中不同的binding生成客户端访问服务的测试类:AccountManagerServicePortType_AccountManagerServiceSOAP11PortHttp_Client.javaAccountManagerServicePortType_AccountManagerServiceSOAP12PortHttp_Client.javaAccountManagerServicePortType_AccountManagerServiceHttpport_Client.java示例:契约优先(WSDLFirst)契约优先(WSDLFirst)根据生成PortType接口类编写具体服务实现类(Server端)1、编写服务实现类:AccountManagerServiceImpl.java该类实现接口AccountManagerServicePortType.java契约优先(WSDLFirst)根据生成PortType接口类编写具体服务实现类(Server端)2、编写服务启动类Server.java,运行该类启动发布服务;使用javax.xml.ws.Endpoint类的publish方法示例:契约优先(WSDLFirst)根据生成的客户端binding测试类来测试具体服务运行测试类对服务进行访问:AccountManagerServicePortType_AccountManagerServiceSOAP11PortHttp_Client.java基于JAX-WSAPI开发WebServiceJAX-WS客户端APIsJAX-WS服务端APIs基于JAX-WSAPI开发WebServiceJAX-WS客户端APIsjavax.xml.ws.Servicejavax.xml.ws.BindingProviderjavax.xml.ws.Dispatch基于JAX-WSAPI开发WebServicejavax.xml.ws.ServiceService类提供对WebService的客户端访问方法主要方法:构造方法:Service(.URL
wsdlDocumentLocation,space.QName
serviceName)addPort(space.QName
portName,java.lang.String
bindingId,java.lang.String
endpointAddress)create(.URL
wsdlDocumentLocation,space.QName
serviceName)
getPort(java.lang.Class<T>
serviceEndpointInterface)createDispatch(EndpointReference
endpointReference,java.lang.Class<T>
type,Service.Mode
mode,WebServiceFeaturefeatures)setExecutor(java.util.concurrent.Executor
executor)setHandlerResolver(HandlerResolver
handlerResolver)javax.xml.ws.Service
示例1:privatestaticfinalQNameSERVICE_NAME=newQName("http://server.java_first_jaxws.hw.demo/","HelloWorld");privatestaticfinalQNamePORT_NAME=newQName("http://server.java_first_jaxws.hw.demo/","HelloWorldPort");
Serviceservice=Service.create(SERVICE_NAME);//EndpointAddressStringendpointAddress="http://localhost:9000/helloWorld";//AddaporttotheServiceservice.addPort(PORT_NAME,SOAPBinding.SOAP11HTTP_BINDING,endpointAddress);
HelloWorldhw=service.getPort(HelloWorld.class);System.out.println(hw.sayHi("World"));javax.xml.ws.Service示例2:
URLwsdlLocation=newURL("/my.wsdl");QNameserviceName=newQName("/sample","MyService");Services=Service.create(wsdlLocation,serviceName);HelloWorldhw=service.getPort(HelloWorld.class);System.out.println(hw.sayHi("World"));基于JAX-WSAPI开发WebServicejavax.xml.ws.BindingProviderTheBindingProviderinterfaceprovidesaccesstotheprotocolbindingandassociatedcontextobjectsforrequestandresponsemessageprocessing.javax.xml.ws.BindingProvider示例:javax.xml.ws.Serviceservice=...;com.example.StockQuoteProviderproxy=service.getPort(portName,com.example.StockQuoteProvider.class)javax.xml.ws.BindingProviderbp=(javax.xml.ws.BindingProvider)proxy;Map<String,Object>co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国庆节小区物业活动策划
- 门店店长工作岗位职责(30篇)
- 冬季领导致辞稿开场白(3篇)
- 酒店销售经理的述职报告
- 会计学原理张曾莲课后参考答案
- 四川省泸州市(2024年-2025年小学五年级语文)统编版随堂测试((上下)学期)试卷及答案
- 2024年航空制造和材料专用设备项目资金需求报告代可行性研究报告
- 多姿多彩的图形教案
- 2024安全加密芯片技术规范
- 2023-2024学年广东省深圳市福田区九年级(上)期中英语试卷
- 学校义务教育均衡发展一校一策方案
- 躬耕教坛强国有我教师心得体会范文(10篇)
- 招投标管理招聘面试题及回答建议(某大型国企)2025年
- 2024年医院传染病管理制度范文(二篇)
- 大型集团公司信息安全整体规划方案相关两份资料
- 第五单元测试卷(单元测试)-2024-2025学年六年级上册语文统编版
- 打造低空应急体系场景应用实施方案
- 2024年新人教版七年级上册数学教学课件 4.2 整式的加法与减法 第2课时 去括号
- 高校实验室安全通识课学习通超星期末考试答案章节答案2024年
- 中华人民共和国标准设计施工总承包招标文件(2012年版)
- 2024年秋季新人教版七年级上册生物全册教案设计
评论
0/150
提交评论