码。WSDL中<xs:schema>部分生成的Java数据类型将作为Web服务操作的输入参数和返回值使用。
BEA为“从WSDL开始”编程模型提供了wsdlc Ant任务。它将Glassfish wsimport Ant任务封装在内部。因此我们不用直接在build.xml文件中使用Ant任务。
Ant Task Reference for wsdlc 这篇BEA文档介绍了如何使用<wsdlc>元素的type="JAXWS"属性生成JAXB工件。wsdlc Ant任务中的<binding>子元素可用于指定所要使用的JAXB绑定自定义文件。
文章的其余部分将介绍如何创建、部署和测试基于POJO(Plain-Old Java Object)的JAX-WS Web服务端点,即DataStagingService。
创建定制文件
第一步需要创建一个JAX-WS定制文件。该文件还可以充当JAXB绑定定制文件,并允许我们控制JAX-WS和JAXB构建时流程,以及它们生成的工件。
定制文件是一个XML文档,它符合XML模式的http://java.sun.com/xml/ns/jaxws和http://java.sun.com/xml/ns/jaxb名称空间。有关创建该定制文件的详细信息,请参阅 JAX-WS 2.0 Beta Customizations。
DataStagingService Web服务的JAX-WS定制文件相当小,因此我列出了该文件的内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bindings
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns="http://java.sun.com/xml/ns/jaxws"
wsdlLocation="DataStagingService2.wsdl"
>
<bindings
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
node="wsdl:definitions"
>
<package name="services.datastaging">
<jxb:javadoc>
<![CDATA[<body>Package level documentation for generated
package services.datastaging.</body>]]>
</jxb:javadoc>
</package>
<jxb:schemaBindings>
<jxb:package name="com.acmeworld.irad.services.datastaging"/>
</jxb:schemaBindings>
</bindings>
</bindings>
在WEBLOGIC SERVER 10中使用JAX-WS和JAXB(3)
时间:2011-01-27
我将主要使用该定制文件控制生成类的Java包名。您可以在该定制文件中实现更多其他功能,请参阅 JAX-WS 2.0 Beta Customizations。
下面的清单展示了DataStagingService Web服务的WSDL中所使用的XML Schema:
<xs:schema
targetNamespace="http://services.irad.acmeworld.com/datastaging"
xmlns:tns="http://services.irad.acmeworld.com/datastaging"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
>
<xs:complexType name="DataStaging">
<xs:sequence>
<xs:element name="inputURIs">
<xs:complexType>
<xs:sequence>
<xs:element name="inputURI" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="uri" type="xs:anyURI"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DataStagingResponse">
<xs:sequence>
<xs:element name="outputURIs">
<xs:complexType>
<xs:sequence>
<xs:ele
|