Generating Java artifacts for JAX-WS applications from a WSDL file

Use JAX-WS tools to generate the Java™ artifacts that are needed to develop JAX-WS web services when starting with a Web Services Description Language (WSDL) file.

Before you begin

When using a top-down development approach to developing Java API for XML-Based Web Services (JAX-WS) web services by starting with a Web Services Description Language (WSDL) file, you must obtain the Uniform Resource Locator (URL) of the WSDL file.

[Windows][z/OS]If the WSDL file is a local file, the URL looks like this example: file:drive:\path\file_name.wsdl.

[Linux][AIX][HP-UX][Solaris][IBM i]If the WSDL file is a local file, the URL looks like this example: file:/path/file_name.wsdl.

You can also specify local files using the absolute or relative file system path.

About this task

You can use the JAX-WS tool, wsimport, to process a WSDL file and generate portable Java artifacts that are used to create a web service. The portable Java artifacts created using the wsimport tool are:
  • Service endpoint interface (SEI)
  • Service class
  • Exception class that is mapped from the wsdl:fault class (if any)
  • Java Architecture for XML Binding (JAXB) generated type values which are Java classes mapped from XML schema types
支援的配置 支援的配置: z/OS® 平台不支援 wsimportwsgenschemagenxjc 指令行工具。 這項功能是由隨執行於 z/OS 平台的 WebSphere® Application Server 提供的組合工具所提供。請閱讀 JAX-WS 應用程式的這些指令行工具以進一步瞭解這些工具。sptcfg
最佳作法 最佳作法: WebSphere Application Server 提供 Java API for XML-Based Web Services (JAX-WS) 和 Java Architecture for XML Binding (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 2.2 版工具,請使用在 app_server_root\bin\ 目錄內之應用程式伺服器所提供的工具。bprac

In addition to using the tools from the command-line, you can invoke these JAX-WS tools from within the Ant build environments. Use the com.sun.tools.ws.ant.WsImport Ant task from within the Ant build environment to invoke the wsimport tool. To function properly, this Ant task requires that you invoke Ant using the ws_ant script.

Procedure

Run the wsimport command to generate the portable client artifacts. The wsimport tool is located in the app_server_root\bin\ directory.
[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
(Optional) Use the following options with the wsimport command:
  • Use the -verbose option to see a list of generated files when you run the command.
  • Use the -keep option to keep generated Java files.
  • Use the -wsdlLocation option to specify the location of the WSDL file.
    最佳作法 最佳作法: A best practice for ensuring that you produce a JAX-WS web services client enterprise archive (EAR) file that is portable to other systems is to package the WSDL document within the application module such as a web services client Java archive (JAR) file or a web application archive (WAR) file. You can specify a relative URI for the location of your WSDL file by using the -wsdllocation annotation attribute. For example, if your MyService.wsdl file is located in the META-INF/wsdl/ directory, then run the wsimport tool and use the -wsdllocation option to specify the value to be used for the location of the WSDL file. This ensures that the generated artifacts contain the correct -wsdllocation information needed when the application is loaded into the administrative console; for example:
    wsimport -keep -wsdllocation=META-INF/wsdl/MyService.wsdl
    bprac
  • Use the -b option if you are using WSDL or schema customizations to specify external binding files that contain your customizations.

    You can customize the bindings in your WSDL file to enable asynchronous mappings or attachments. To generate asynchronous interfaces, add the client-side only customization enableAsyncMapping binding declaration to the wsdl:definitions element or in an external binding file that is defined in the WSDL file. Use the enableMIMEContent binding declaration in your custom client or server binding file to enable or disable the default mime:content mapping rules. For additional information on custom binding declarations, see chapter 8 the JAX-WS specification.

Read about the wsimport command to learn more about this command and additional options that you can specify.

Results

You have the required Java artifacts to create a JAX-WS web service. To learn more about the usage, syntax, and parameters for the wsimport command, see the wsimport command for JAX-WS applications documentation.

Example

The following example illustrates how the wsimport command is used to process the sample Ping WSDL file to generate portable artifacts.
  1. Copy the following ping.wsdl WSDL file to a temporary directory.
    <?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. Run the wsimport command from the app_server_root\bin\ directory.
    [Windows]
    app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]Operating systems such as AIX® or Linux source the script to the parent shell to inherit the exported variables by running the following command:
    . ./setupCmdLine.sh  (Notice the space between the periods.)
    from the . /app_server_root>/bin directory. Run the wsimport command,
    app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl 
    [IBM i]
    app_server_root/bin/wsimport -keep -verbose ping.wsdl
After generating the template files using the wsimport command, the following files are generated:
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\PingStringInput.java
com\ibm\was\wssample\sei\ping\PingService.java

The ObjectFactory.java file contains factory methods for each Java content interface and Java element interface generated in the associated ping package. The package-info.java file takes the targetNamespace value and creates the directory structure. The PingServicePortType.java file is the generated service endpoint interface (SEI) class that contains the ping method definition. The PinStringInput.java file contains the JAXB generated type values which are Java classes mapped from XML schema types. The PingService.java file is the generated service provider class file that is used by the JAX-WS client.

What to do next

Complete the implementation of your web service application by completing the JavaBeans or enterprise beans implementation.

指出主題類型的圖示 作業主題



時間戳記圖示 前次更新: July 9, 2016 11:18
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsfromwsdl
檔名:twbs_jaxwsfromwsdl.html