内容jax-ws使用教程_第1页
内容jax-ws使用教程_第2页
内容jax-ws使用教程_第3页
内容jax-ws使用教程_第4页
内容jax-ws使用教程_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAX-WSJAX-WS 运行 修改生成的Java代 生成并修改后的Java代 结 调用Web SOAP 客户端添加SOAP headers 附 JAX-WSJAX-WSPAGEPAGE10/概文档内JAX-WSJAX-WS2.0JavaAPIforXML-BasedWebservices(JAX-WS)2.0。JAX-2.0是对JAX-RPC1.0规范的扩展,是JAX-RPC1.1的后续版本,JAX-RPC2.0标准发布不久后便被重新命名为JAX-WS2.0JAX-WS2.0Java5Webservices的编程标准,它提供了新的编程模型和对以往的JAX-RPC方式的Webservices进行JAX-WS2.0JSR224)Sunwebservices协议栈,是一个完全基于标准的实现。在binding层,使用的是theJavaArchitectureforXMLBinding(JAXBJSR222)parsing层,theStreamingAPIforXML(StAX,JSR173),同时它还完全支持schema规范。JAX-WS2.1支持XML/HTTP支持WS-缩略语JAX-WS参考资《利用WAS6.1WebService功能部件包开发JAX-WS2.0Webservices MetroUsersJavaAPIforXMLWebServices(JAX-WS)JAX-WSRI"JAX-WSRI2.1.1inJDK6JAX-WS2.0WSDL文件来创建WebService,自底向上是从Java类出发创建WebService。两种开发过程最终WSDLXSD开发步开发WebService SEIpackage*演示从JavaWebService*publicclassopublicStringsay(Stringname,intage)returnString.format("o,%s,youare%dyearsold",name,}}运行 o-wsdl-ssrc-dbin-rbin是生成的class生成的Javapackageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRoo importjavax.xml.bind.annotation.XmlType;@XmlType(name="say",namespace="",propOrder={"arg0","arg1"publicclassSay@XmlElement(name="arg0",namespace=privateString@XmlElement(name="arg1",namespace=privateint*@returnreturnspublicStringgetArg0()return}*@paramthevalueforthearg0publicvoidsetArg0(Stringarg0)this.arg0=}@returnreturnspublicintgetArg1()return}@paramthevalueforthearg1publicvoidsetArg1(intarg1)this.arg1=}}packageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRooement;importjavax.xml.bind.annotation.XmlType;@XmlRooement(name="sayResponse",namespace="")@XmlType(name="sayResponse",namespace="publicclassSayResponse@XmlElement(name="return",namespace=privateString*publicStringgetReturn()return}@paramthevalueforthe_returnthis._return=}}生成WSDLGeneratedbyJAX-WSRIat.RI'sversionisJAX-WSRI2.1.1inJDK6. <message<message<operation "<operation 结开发步wsimport生成Java运行使用上面生成的WSDL来反向生成Javawsimport-keep-dbin-ssrcwsdl/bin是生成的class生成的Javapackageimportjavax.jws.W importjavax.jws.WebResult;importjavax.jws.WebService;ThisclasswasgeneratedbytheJAX-WSRI.JAX-WSRI2.1.1inJDK6sourceversion:@WebService(name=" o",targetNamespace="")@XmlSeeAlso({ObjectFactory.class})publicinterfaceo*@param@param@returnreturns@RequestWrapper(localName="say",targetNamespace="",className="ws.server.fromjava.Say") "",className="ws.server.fromjava.SayResponse")publicString@Wram(name="arg0",targetNamespace="")Stringarg0,@Wram(name="arg1",targetNamespace="")intarg1);}packageimportjavax.xml.ws.WebEndpoint;importjavax.xml.ws.WebService ThisclasswasgeneratedbytheJAX-WSRI.JAX-WSRI2.1.1inJDK6sourceversion: (name=" oService",targetNamespace="",wsdlLocation="file:/D:/jax-ws-server-fromwsdl/wsdl/ public oServiceextendsServiceprivatefinalstatic staticURLurl=null;try{url=new{}} }publicoService() QName(""}*@return o return( o)super.getPort(newQName("", }*@paramon .Supportedfeaturesnotin@returnreturns o return( o)super.getPort(newQName("", o.class,features);}}packageimportjavax.xml.bind.annotation.XmlRegistry;importspace.QName;ThisobjectcontainsfactorymethodsforeachJavacontentinterfaceandAnObjectFactoryallowsyoutoprogramaticallyconstructnewinstancesofJavarepresentationforXMLcontent.TheJavarepresentationofXMLcanconsistofschemaderivedinterfacesandclassesrepresentingtheofschematypedefinitions,elementdeclarationsandmodelgroups.methodsforeachoftheseareprovidedinthisprivatefinalstaticQNameSayQNAME=QName("",privatefinalstaticQName_SayResponse_QNAME=QName("",CreateanewObjectFactorythatcanbeusedtocreatenewinstancesschemaderivedclassesforpackage:}Createaninstanceof{@linkSaypublicSaycreateSay()returnnew}Createaninstanceof{@linkSayResponsereturnnew}Createaninstanceof{@linkJAXBElement}{@code<}{@linkSay}{@code}Createaninstanceof{@linkJAXBElement}{@code<}{@linkSayResponse{@codeSayResponse.class,null,value);}}package-packagepackageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlType;*Javaclassforsaycomplex*ThefollowingschemafragmentspecifiestheexpectedcontentcontainedthisplexType @XmlType(name="say",propOrder={"arg0","arg1"publicclassSayprotectedStringprotectedintGetsthevalueofthearg0*@returnpossibleobjectis{@linkStringpublicStringgetArg0()return}Setsthevalueofthearg0@paramallowedobjectis{@linkStringthis.arg0=}Getsthevalueofthearg1publicintgetArg1()return}Setsthevalueofthearg1publicvoidsetArg1(intvalue)this.arg1=}}packageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlType;*JavaclassforsayResponsecomplex*ThefollowingschemafragmentspecifiestheexpectedcontentcontainedthisplexType @XmlType(name="sayResponse",propOrder={"_return"publicclassSayResponseprotectedStringGetsthevalueofthereturn*@returnpossibleobjectis{@linkStringpublicStringgetReturn()return}Setsthevalueofthereturn@paramallowedobjectis{@linkStringthis._return=}}package@WebService(serviceName="oService",portName="oPort",endpointInterface="ws.server.fromjava.o",targetNamespace="")publicclassoSEIimplementsopublicStringsay(Stringarg0,intarg1)return}}结在应用程序中发布JDK6提供了发布WebService的简便方法:Endpoint.publish("",newo());如果是从WSDL生成的WebService,则为,Endpoint.publish("",new在Web应用程序中发布依赖发布步骤 <endpoints url- oService"<endpoints <endpoint url- oService"开发步修改生成的Java代码中的WSDL运行wsimport-keep-dbin-ssrcwsdl/bin是生成的class修改生成的Java代码编辑oService.java,@WebService(name="oService",targetNamespace="",wsdlLocation="file:/D:/jax-ws-/wsdl/oService.wsdl")publicclassoServiceextendsServiceprivatefinalstatic staticURLurl=null;try{url=new{}} } oService() QName(" } public oServiceextendsService super(wsdlLocation,newQName("", }生成并修改后的Java代码packageimportjavax.jws.W importjavax.jws.WebResult;importjavax.jws.WebService;ThisclasswasgeneratedbytheJAX-WSRI.JAX-WSRI2.1.1inJDK6sourceversion: o",targetNamespace= public o*@param@param@returnreturns@RequestWrapper(localName="say",targetNamespace="",className="ws.server.fromjava.Say") "",className="ws.server.fromjava.SayResponse")publicString ram(name="arg0",targetNamespace="")Stringarg0, ram(name="arg1",targetNamespace="")intarg1);}packageimportjavax.xml.ws.WebEndpoint;importjavax.xml.ws.WebService;ThisclasswasgeneratedbytheJAX-WSRI.JAX-WSRI2.1.1inJDK6sourceversion:publicclassoServiceextendsServicesuper(wsdlLocation,newQName("",}*@returnreturns o return( o)super.getPort(newQName("", }*@paramon .Supportedfeaturesnotin@returnreturns@WebEndpoint(name=" return( o)super.getPort(newQName("","oPort"),o.class,features);}}packageimportjavax.xml.bind.annotation.XmlRegistry;importspace.QName;ThisobjectcontainsfactorymethodsforeachJavacontentinterfaceandAnObjectFactoryallowsyoutoprogramaticallyconstructnewinstancesofJavarepresentationforXMLcontent.TheJavarepresentationofXMLcanconsistofschemaderivedinterfacesandclassesrepresentingtheofschematypedefinitions,elementdeclarationsandmodelgroups.methodsforeachoftheseareprovidedinthisprivatefinalstaticQNameSayQNAME=QName("",privatefinalstaticQName_SayResponse_QNAME=QName("",CreateanewObjectFactorythatcanbeusedtocreatenewinstancesschemaderivedclassesforpackage:}Createaninstanceof{@linkSaypublicSaycreateSay()returnnew}Createaninstanceof{@linkSayResponsereturnnew}Createaninstanceof{@linkJAXBElement}{@code<}{@linkSay}{@code}Createaninstanceof{@linkJAXBElement}{@code<}{@linkSayResponse{@codeSayResponse.class,null,value);}}package-packagepackageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlType;*Javaclassforsaycomplex*ThefollowingschemafragmentspecifiestheexpectedcontentcontainedthisplexType @XmlType(name="say",propOrder={"arg0","arg1"publicclassSayprotectedStringprotectedintGetsthevalueofthearg0*@returnpossibleobjectis{@linkStringpublicStringgetArg0()return}Setsthevalueofthearg0@paramallowedobjectis{@linkStringthis.arg0=}Getsthevalueofthearg1publicintgetArg1()return}Setsthevalueofthearg1publicvoidsetArg1(intvalue)this.arg1=}}packageimportjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlType;*JavaclassforsayResponsecomplex*ThefollowingschemafragmentspecifiestheexpectedcontentcontainedthisplexType @XmlType(name="sayResponse",propOrder={"_return"publicclassSayResponseprotectedStringGetsthevalueofthereturn*@returnpossibleobjectis{@linkStringpublicStringgetReturn()return}Setsthevalueofthereturn@paramallowedobjectis{@linkStringthis._return=}}结调用WebWebServiceURLurl=newURL("//oServiceservice=new//WebServiceSOAPWhentheWSDLyouarecompilingspecifiesthatsomepartsofamessageareboundtoSOAPheaders,wsimportgeneratestherightstuff(@Wram(header=true)),soyoucanpassheadersasargumentstothemethodinvocation.WhenstartingfromJava,youcanusethissameannotationtoindicatethatsomeparametersbesentasheaders.Thatsaid,therearemanyWSDLsouttherethatdonotspecifySOAPheadersexplicitly,yettheprotocolstillrequiressuchheaderstobesent,sotheJAX-WSRIoffersconvenientwaysforyoutosend/receiveadditionalheadersatruntime.非标准方法客户端添加SOAPTheportablewayofngthisisthatyoucreaateaSOAPHandlerandmesswithSAAJ,buttheRIprovidesabetterwayofngthis.Whenyoucreatea ordispatchobject,theyimplementBindingProviderinterface.WhenyouusetheJAX-WSRI,youcandowncasttoWSBindingProviderwhichdefinesafewmoremethodsprovidedonlybytheJAX-WSRI.ThisinterfaceletsyousetanarbitrarynumberofHeaderobject,eachrepresentingaSOAPheader.Youcanimplementitonyourownifyouwant,butmostlikelyyou'duseoneofthefactorymethodsdefinedonHeadersclasstocreateone.WebServiceURLurl=newURL("//oServiceservice=newoService(url);ooPort=service.getoPort();WSBindingProviderbp=(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论