Java Web服务 - Axis2中的JAXB和JAX-WS[Java编程]
本文“Java Web服务 - Axis2中的JAXB和JAX-WS[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
早期的 Apache Axis 成立在第一个面向 Web 服务的 Java 尺度 JAX-RPC 的底子之上.事实证明,这并非一个很好的办法,因为 JAX-RPC 限制了 Axis 代码的内部计划,并且造成了性能问题并贫乏机动性.JAX-RPC 还对 Web 服务开辟的方向作出了假定,而这在后来被证明是错误的.
在开始 Axis2 开辟工作时,已经着手研究 JAX-RPC 的替换挑选,因此,Axis2 在计划时已经考虑到了充足的机动性,使其可以在底子框架之上实现对替换 Web 服务尺度的支持.最新的 Axis2 版本同时实现了对 JAXB 2.x Java XML 数据绑定尺度和替换了 JAX-RP 的 JAX-WS 2.x Java Web 服务尺度的支持.本文将展示若何将 JAXB 和 JAX-WS 用于 Axis2 并找出 Axis2 对这些尺度的当前支持中存在的一些限制.
Axis2 中的 JAXB
Axis2 实现了对 JAXB 2.x 的支持,将它作为数据绑定替换挑选的此中之一,您可以在利用 WSDL2Java 从 Web Services Description Language (WSDL) 服务定义中生成代码时举行挑选.和大大都其他替换挑选一样,利用 JAXB 2.x 从 WSDL 中生成的代码成立了一组链接(linkage)类和一组数据模子类.这些链接类,包含一个客户端 stub 和一个服务器端消息接纳器,充当利用程序代码和 Axis2 之间的接口.数据模子类表示实际的消息数据.
JAXB 2.x 利用数据模子类中的注释来掌握数据与 XML 之间的转换方法.注释办法答应您在无需改正源代码或重新编译类的情形下在运行时利用差别的 JAXB 实现.由 JAXB 实现负责从数据模子类拜候注释信息并在履行 XML 转换时利用这些注释.
代码下载(拜见 下载)供应了一个演示在 Axis2 中利用 JAXB 的示例利用程序,位于 jaxb 目录中.这个利用程序是本系列前一篇文章中的简单的库管理服务的另一个版本(包含 “Axis2 Data Binding” 中的数据绑定对比).WSDL 服务定义定义了四个操作:
getBook 用来检索由 International Standard Book Number (ISBN) 标识的某本特定图书的细节信息
getBooksByType 用来检索某一特定范例的全部图书的细节信息
getTypes 用于查找可用的图书范例
addBook 用于将新书增添到库中
清单 1 显示的是经过大量编辑的 WSDL,只包含了与 getBook 操作有关的部份:
清单 1. 库服务 WSDL
<wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
xmlns:wns="http://ws.sosnoski.com/library/wsdl"
xmlns:tns="http://ws.sosnoski.com/library/types"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://ws.sosnoski.com/library/wsdl"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://ws.sosnoski.com/library/types"
schemaLocation="types.xsd"/>
<element name="getBook">
<complexType>
<sequence>
<element name="isbn" type="string"/>
</sequence>
</complexType>
</element>
<element name="getBookResponse">
<complexType>
<sequence>
<element name="getBookReturn" minOccurs="0" type="tns:BookInformation"/>
</sequence>
</complexType>
</element>
...
</schema>
</wsdl:types>
<wsdl:message name="getBookRequest">
<wsdl:part element="wns:getBook" name="parameters"/>
</wsdl:message>
<wsdl:message name="getBookResponse">
<wsdl:part element="wns:getBookResponse" name="parameters"/>
</wsdl:message>
...
<wsdl:portType name="Library">
<wsdl:operation name="getBook">
<wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
<wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
</wsdl:operation>
...
</wsdl:portType>
<wsdl:binding name="LibrarySoapBinding" type="wns:Library">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getBook">
<wsdlsoap:operation soapAction="urn:getBook"/>
<wsdl:input name="getBookRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getBookResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
...
</wsdl:binding>
<wsdl:service name="jaxb-library">
<wsdl:port binding="wns:LibrarySoapBinding" name="library">
<wsdlsoap:address location="http://localhost:8080/axis2/services/jaxb-library"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
以上是“Java Web服务 - Axis2中的JAXB和JAX-WS[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |