快速业务通道

在WEBLOGIC SERVER 10中使用JAX-WS和JAXB - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
素实例化一个对象”的实践,JAX-RPC需要这样。

调用Web服务操作。此外需要格外小心,因为“操作名称”包装器元素并不会自动添加。如果服务端点需要一个,则需要自己添加。

使用JAXP转换类将响应从Web服务操作编组到java.io.ByteArrayOutputStream中。您可以处理所需的一切内容(比如说byte[]、String和XML)。同样,这远没有在JAX-RPC中处理JavaBean图(或javax.xml.soap.SOAPElement对象)费力。

以上是整个步骤的总结。希望您可更好的理解如何在WebLogic Server 10中使用JAX-WS 2.0和JAXB 2.0实现。这些实现中的API即可以在服务提供者端使用,也可以在服务用户端使用。请查看我所提供的示例代码,您会发现其中没有使用(或导入)任何特定于WebLogic的类。这表示该代码是完全可移植的,并且应该能够在Axis2上编译,而无需对代码(或定制文件)进行任何修改。但是,您需要修改build.xml文件,使JAX-WS和JAXB实现使用Axis2所使用的.jar文件。还需要修改用于JAX-WS、JAXB和部署的Ant任务。

一些最佳实践

以下列出了在WebLogic Server 10中使用JAX-WS和JAXB 实现的一些最佳实践:

避免在代码中使用特定于供应商的注释。这样在尝试不同供应商的JAX-WS实现时就无需对代码进行修改。通常,JAX-WS实现供应商都提供了在Ant任务中访问特定于供应商注释的方法。WebLogic Server使用的是这一选项,因此您应该利用这一特性,以避免在JWS中使用特定于供应商的注释。

在可能的地方使用JAXP StreamSource和 and StreamResult。javax.xml.transform.stream.StreamSource和javax.xml.transform.stream.StreamResult所类提供的方法可以最有效地处理Java串行化(和并行化)问题。因此,您应该尽可能地使用它们。

缓存JAXBContext对象。javax.xml.bind.JAXBContext对象是一个用于通过Java类创建JAXB对象的工厂。创建JAXBContext对象需要的开销比较大,因此应该缓存它们从而便于重用。

使用JAXBElement编组内部类。JAXB 2.0将使用内部类用于匿名complexType元素。如果您之后在Web服务操作的方法签名中使用其中某个元素,那么将在构建时接收到一个javax.xml.bind.MarshalException异常。问题是内部类并不是高级元素,因此并没有@XmlRootElement注释。解决的方法是为内部类创建一个JAXBElement对象。要了解如何创建该对象,请在DataStagingServiceImpl.java文件中搜索"JAXBElement"。

下载

wls10wss_jaxws-article1.zip——该zip文件含有本教程所使用的所有源代码。

结束语

JAX-WS和JAXB是用于构建下一代基于Java的Web服务的最有前途的两个API。如今,WebLogic Server 10 Web Services栈通过Glassfish JAR和BEA Ant任务这两个API都提供了支持。

您可以使用WebLogic Server 10 Web Services栈为任何JAX-WS实现编写、构建和部署JAX-WS Web服务,而不仅限于WebLogic Server 10中的实现。Jwsc和wsdlc Ant任务已经经过修改,现在可允许您指定生成JAX-WS和JAXB工件时所使用的定制文件。可以使用<binding>子元素实现这一目的。Jwsc和wsdlc Ant任务将从内部调用Sun的wsimport Ant任务。

希望您可以通过本文了解使用WebLogic Server 10 Web Services栈生成JAX-WS和JAXB工件是多么地容易。但是,创建定制文件却并非易事。我们可以通过定制文件影响工件的生成流程。不过也不用担心,我将在后续的几篇文章中介绍如何创建定制文件。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号