|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
初期的ApacheAxis创建在第一个面向Web服务的Java尺度JAX-RPC的基本之上。现实证实,这并非一个很好的办法,由于JAX-RPC限定了Axis代码的外部计划,并且形成了功能成绩并缺少天真性。JAX-RPC还对Web服务开辟的偏向作出了假定,而这在厥后被证实是毛病的。
在入手下手Axis2开辟事情时,已动手研讨JAX-RPC的替换选择,因而,Axis2在计划时已思索到了充足的天真性,使其可以在基本框架之上完成对替换Web服务尺度的撑持。最新的Axis2版本同时完成了对JAXB2.xJavaXML数据绑定尺度和替换了JAX-RP的JAX-WS2.xJavaWeb服务尺度的撑持。本文将展现怎样将JAXB和JAX-WS用于Axis2并找出Axis2对这些尺度确当前撑持中存在的一些限定。
Axis2中的JAXB
Axis2完成了对JAXB2.x的撑持,将它作为数据绑定替换选择的个中之一,您能够在利用WSDL2Java从WebServicesDescriptionLanguage(WSDL)服务界说中天生代码时举行选择。和年夜多半其他替换选择一样,利用JAXB2.x从WSDL中天生的代码创立了一组链接(linkage)类和一组数据模子类。这些链接类,包含一个客户端stub和一个服务器端动静吸收器,充任使用程序代码和Axis2之间的接口。数据模子类暗示实践的动静数据。
JAXB2.x利用数据模子类中的正文来把持数据与XML之间的转换体例。正文办法同意您在无需修正源代码或从头编译类的情形下在运转时利用分歧的JAXB完成。由JAXB完成卖力从数据模子类会见正文信息并在实行XML转换时使用这些正文。
代码下载(拜见下载)供应了一个演示在Axis2中利用JAXB的示例使用程序,位于jaxb目次中。这个使用程序是本系列前一篇文章中的复杂的库办理服务的另外一个版本(包含“Axis2DataBinding”中的数据绑定对照)。WSDL服务界说界说了四个操纵:
getBook用来检索由InternationalStandardBookNumber(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>
<p>
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。 |
|