+

Search Tips   |   Advanced Search

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

Use JAX-WS tools to generate the Java artifacts needed to develop JAX-WS web services when starting with a WSDL file.

When using a top-down development approach to developing JAX-WS web services by starting with a Web Services Description Language (WSDL) file, we must obtain the URL of the WSDL file.

(Windows) (ZOS) If the WSDL file is a local file, the URL looks like this example: file:drive:\path\file_name.wsdl.

(Linux) (AIX) (HPUX) (Solaris) (iSeries) If the WSDL file is a local file, the URL looks like this example: file:/path/file_name.wsdl.

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

Use the JAX-WS tool, wsimport, to process a WSDL file and generate portable Java artifacts used to create a web service. The portable Java artifacts created using the wsimport tool are:

The wsimport, wsgen, schemagen and xjc command-line tools are not supported on the z/OS platform. This functionality is provided by the assembly tools provided with WebSphere Application Server running on the z/OS platform. Read about these command-line tools for JAX-WS applications to learn more about these tools.

WAS provides JAX-WS and Java Architecture for XML Binding (JAXB) tooling. The wsimport, wsgen, schemagen and xjc command-line tools are located in the app_server_root\bin\ directory in WAS traditional.The xjc and schemagen commands are located in the app_server_root\jaxb\bin\ directory in Liberty profile. On some occasions, the artifacts generated by both the tooling provided by WAS and the JDK support the same levels of the specifications. In general, the artifacts generated by the JDK tools are portable across other compliant runtime environments. However, it is a best practice to use the tools provided with this product to achieve seamless integration within the WAS environment and to take advantage of the features that may be only supported in WAS. To take advantage of JAX-WS and JAXB V2.2 tooling, use the tools provided with the application server located in...

bprac

In addition to using the tools from the command-line, we 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.


Tasks

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 
(UNIX)
app_server_root/bin/wsimport.sh wsdl_URL
(iSeries)
app_server_root/bin/wsimport wsdl_URL

(Optional) Use the following options with the wsimport command:

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

We 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) (HPUX) (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 
    

    (iSeries)

    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 containing 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 used by the JAX-WS client.


What to do next

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


Subtopics


Related:

  • Development and assembly tools
  • JAX-WS
  • Implement web services applications from existing WSDL files with JAX-WS
  • Completing the JavaBeans implementation for JAX-WS applications
  • Completing the EJB implementation for JAX-WS applications