根据 WSDL 文件开发 JAX-WS 客户机

Java™ API for XML-Based Web Services (JAX-WS) 工具支持生成从 Web 服务描述语言 (WSDL) 文件着手时,开发静态 JAX-WS Web Service 客户机所需的 Java 工件。

开始之前

使用自顶向下式开发方法根据 WSDL 文件开发 JAX-WS Web Service 时,必须获取 WSDL 文件的统一资源定位符 (URL)。

[Windows][z/OS]如果 WSDL 文件是本地文件,那么 URL 应该类似以下示例:file:drive:\path\file_name.wsdl

[Linux][AIX][HP-UX][Solaris][IBM i]如果 WSDL 文件是本地文件,那么 URL 应该类似以下示例:file:/path/file_name.wsdl

还可以使用绝对或相对文件系统路径来指定本地文件。

关于此任务

JAX-WS 的静态客户机编程模型称为 Dynamic proxy client。Dynamic proxy client 根据提供的服务端点接口来调用 Web Service。创建代理后,客户机应用程序可以调用此代理上的方法,如同调用那些接口的标准实现。对于使用动态代理编程模型的 JAX-WS Web Service 客户机,请使用 JAX-WS 工具 wsimport 来处理 WSDL 文件,并生成用于创建 Web Service 客户机的可移植 Java 工件。使用 wsimport 工具创建以下可移值 Java 工件:
  • 服务端点接口 (SEI)
  • 服务类
  • 异常类(从 wsdl:fault 类映射)
  • Java XML 绑定体系结构 (JAXB) 生成的类型值,它们是从 XML 模式类型映射的 Java 类
支持的配置 支持的配置: z/OS® 平台不支持 wsimportwsgenschemagenxjc 命令行工具。随在 z/OS 平台上运行的 WebSphere® Application Server 一起提供的组装工具提供了此功能。请针对 JAX-WS 应用程序查看这些命令行工具,以更多地了解这些工具。sptcfg
最佳实践 最佳实践: WebSphere Application Server 提供 Java API for XML-Based Web Services (JAX-WS) 和 Java XML 绑定体系结构 (JAXB) 工具。wsimportwsgenschemagenxjc 命令行工具位于 WebSphere Application Server(传统)app_server_root\bin\ 目录中。xjcschemagen 命令位于 Liberty 概要文件中的 app_server_root\jaxb\bin\ 目录中。在某些情况下,由 WebSphere Application Server 提供的工具以及 JDK 两者所生成的工件支持相同级别的规范。总之,JDK 工具生成的工件可在其他顺应的运行时环境之间移植。然则,最好是使用本产品附带提供的工具来在 WebSphere Application Server 环境内实现无缝集成并利用可能仅在 WebSphere Application Server 中受支持的功能部件。要利用 JAX-WS 和 JAXB V2.2 工具,请使用应用程序服务器附带提供的工具,这些工具位于 app_server_root\bin\ 目录。bprac

除了从命令行使用这些工具外,还可以从 Ant 构建环境中调用这些 JAX-WS 工具。从 Ant 构建环境中使用 com.sun.tools.ws.ant.WsImport Ant 任务可以调用 wsimport 工具。为了使功能正常,此 Ant 任务需要您使用 ws_ant 脚本来调用 Ant。

过程

运行 wsimport 命令以生成可移值客户机工件。 wsimport 工具位于 app_server_root\bin\ 目录中。
[Windows]
app_server_root\bin\wsimport.bat wsdl_URL 
[AIX][HP-UX][Linux][Solaris]
app_server_root/bin/wsimport.sh wsdl_URL
[IBM i]
app_server_root/bin/wsimport wsdl_URL
(可选)将以下选项与 wsimport 命令一起使用:
  • 运行命令时使用 -verbose 选项来查看生成文件的列表。
  • 使用 -keep 选项来保留生成的 Java 文件。
  • 使用 -wsdlLocation 选项来指定 WSDL 文件的位置。
    最佳实践 最佳实践: 确保您生成了可移植到其他系统的 JAX-WS Web Service 客户机企业归档 (EAR) 文件的最佳实践是将 WSDL 文档打包到应用程序模块中,例如 Web Service 客户机 Java 归档 (JAR) 文件或 Web 应用程序归档 (WAR) 文件。可通过使用 -wsdllocation 注释属性为 WSDL 文件的位置指定一个相对 URI。例如,如果 MyService.wsdl 文件位于 META-INF/wsdl/ 目录中,那么请运行 wsimport 工具并使用 -wsdllocation 选项来指定用作 WSDL 文件位置的值。这确保生成的工件包含将应用程序装入到管理控制台中时所需的正确 -wsdllocation 信息;例如:
    wsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
    bprac
  • 如果要使用 WSDL 或模式定制指定包含定制的外部绑定文件,请使用 -b 选项。

    可以在 WSDL 文件中定制绑定以启用异步映射或连接文件。要生成异步接口,请仅将客户机端定制 enableAsyncMapping 绑定声明添加至 wsdl:definitions 元素或者在 WSDL 文件中定义的外部绑定文件。在定制客户机或服务器绑定文件中使用 enableMIMEContent 绑定声明来启用或禁用缺省 mime:content 映射规则。有关定制绑定声明的更多信息,请参阅 JAX-WS 规范第 8 章。

阅读 wsimport 命令以了解有关此命令的更多信息以及可指定的其他选项。

结果

您生成了 Java 工件以创建可调用 JAX-WS Web Service 的 JAX-WS 客户机。要了解 wsimport 命令的用法、语法和参数的更多信息,请参阅 JAX-WS 应用程序文档中的 wsimport 命令。

示例

以下示例说明如何使用 wsimport 命令来处理样本 ping.wsdl 文件以生成可移植工件。
  1. 将以下 ping.wsdl 文件复制到临时目录。
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
     * This program can be used, run, copied, modified and distributed
     * without royalty for the purpose of developing, using, marketing, or distributing.
     -->
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    	xmlns:tns="http://com/ibm/was/wssample/sei/ping/"
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService"
    	targetNamespace="http://com/ibm/was/wssample/sei/ping/">
    	<wsdl:types>
    		<xsd:schema
    			targetNamespace="http://com/ibm/was/wssample/sei/ping/"
    			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    
    			<xsd:element name="pingStringInput">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="pingInput" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    		</xsd:schema>
    	</wsdl:types>
    	<wsdl:message name="pingOperationRequest">
    		<wsdl:part element="tns:pingStringInput" name="parameter" />
    	</wsdl:message>
    	<wsdl:portType name="PingServicePortType">
    		<wsdl:operation name="pingOperation">
    			<wsdl:input message="tns:pingOperationRequest" />
    
    		</wsdl:operation>
    	</wsdl:portType>
    	<wsdl:binding name="PingSOAP" type="tns:PingServicePortType">
    		<soap:binding style="document"
    			transport="http://schemas.xmlsoap.org/soap/http" />
    		<wsdl:operation name="pingOperation">
    			<soap:operation soapAction="pingOperation" style="document" />
    			<wsdl:input>
    				<soap:body use="literal" />
    			</wsdl:input>
    		</wsdl:operation>
    	</wsdl:binding>
    	<wsdl:service name="PingService">
    		<wsdl:port binding="tns:PingSOAP" name="PingServicePort">
    			<soap:address
    				location="http://localhost:9080/WSSampleSei/PingService" />
    		</wsdl:port>
    	</wsdl:service>
    </wsdl:definitions>
  2. app_server_root\bin\ 目录运行 wsimport 命令。
    [Windows]
    app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]诸如 AIX® 或 Linux 之类的操作系统通过运行以下命令将父 shell 的脚本作为源以继承导出的变量:
    . ./setupCmdLine.sh  (Notice the space between the periods.)
    . /app_server_root>/bin 目录。 运行以下 wsimport 命令:
    app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl 
    [IBM i]
    app_server_root/bin/wsimport -keep -verbose ping.wsdl
使用 wsimport 命令生成模板文件后,将生成下列文件:
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.java
com\ibm\was\wssample\sei\ping\PingStringInput.java

将 Java 工件与客户机实现一起封装在 Java 归档 (JAR) 或 Web 应用程序归档 (WAR) 文件中时,ObjectFactory.javaPingService.javaPingServicePortType.java 文件是要使用的已生成的 Java 类文件。

下一步做什么

完成客户机实现。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsclientfromwsdl
文件名:twbs_jaxwsclientfromwsdl.html