快速业务通道

Java Web服务 - Axis2中的JAXB和JAX-WS - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
起。或者,可以像下一小节介绍的那样使用 JAX-WS,这将使您完全跳过 WSDL2Java,但是存在一些明显的限制。

在 Axis2 中使用 JAX-WS

虽然可以将 JAXB 作为 Axis2 中的另一种数据绑定替代选择,但是它与 JAX-WS 之间的区别更加显著。JAX-WS 是一种截然不同的 Web 服务定义方法,它全面取代了标准的 Axis2 服务器端和客户端配置。您使用 JAX-WS 参考实现中附带的 WsImport 工具从 WSDL 中生成 JAX-WS 代码,而不是使用 WSDL2Java。甚至部署机制也不同于 Axis2 中通常使用的 AAR 文件方法。

代码 下载 部分只提供了早先使用的同一样例应用程序的不同版本,这个版本进行了修改,用于演示 JAX-WS 在 Axis2 中的使用。代码位于下载中的 jaxws 目录中,并且它带有自己的 WSDL、build.properties 和 build.xml。这个 JAX-WS 版本的 WSDL 基本上与用于 JAXB 的 WSDL 相同,如 清单 1 所示。该 WSDL 的主要区别在于它对应用程序代码使用了内嵌的模式,而这对于使用 JAXB 数据绑定的 WSDL2Java 来说是不可行的。

当使用 JAX-WS 的 WsImport 工具从 WSDL 创建代码时,将获得与使用 WSDL2Java 实现 JAXB 代码生成时相同的 JAXB 数据模型和封装器类。不同之处在于链接(linkage)代码,对于 JAX-WS,链接代码包含一个生成的服务接口和一个客户端服务构建器类。接口类,如 清单 5(稍微进行了重新格式化,并且只保留了一个方法注释)所示,定义了与 WSDL 中的操作匹配的方法。客户机代码和服务器代码都使用这个接口。接口中的大量注释提供了所有必需配置信息,帮助 JAX-WS 将服务接口与该服务的操作的接口方法关联起来。

清单 5. JAX-WS 生成的服务接口

@WebService(name = "Library", targetNamespace = "http://ws.sosnoski.com/library/wsdl") @XmlSeeAlso({    ObjectFactory.class }) public interface Library {    /**     *     * @param isbn     * @return     *   returns com.sosnoski.ws.library.jaxws.BookInformation     */    @WebMethod(action = "urn:getBook")    @WebResult(name = "getBookReturn",      targetNamespace = "http://ws.sosnoski.com/library/wsdl")    @RequestWrapper(localName = "getBook",      targetNamespace = "http://ws.sosnoski.com/library/wsdl",      className = "com.sosnoski.ws.library.jaxws.GetBook")    @ResponseWrapper(localName = "getBookResponse",      targetNamespace = "http://ws.sosnoski.com/library/wsdl",      className = "com.sosnoski.ws.library.jaxws.GetBookResponse")    public BookInformation getBook(      @WebParam(name = "isbn", targetNamespace = "http://ws.sosnoski.com/library/wsdl")      String isbn);    @WebMethod(action = "urn:getBooksByType")    @WebResult(name = "getBooksByTypeReturn",      targetNamespace = "http://ws.sosnoski.com/library/wsdl")    @RequestWrapper(localName = "getBooksByType",      targetNamespace = "http://ws.sosnoski.com/library/wsdl",      className = "com.sosnoski.ws.library.jaxws.GetBooksByType")    @ResponseWrapper(localName = "getBooksByTypeResponse",      targetNamespace = "http://ws.sosnoski.com/l

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号