Synopsis
java2wsdl [-?|-help|-h][-o <output-file>][-cp <class-path>][-soap12][-t <target-namespace>][-servicenam <seservice-name>][-v][-verbose|-quiet][-s <source-directory>]
[-classdir <compile-classes-directory>][-portname <port-name>][-createxsdimports][-d <output-directory>] { classname }
Description
java2wsdl uses a compiled Web service endpoint's implementation (SEI) class and associated types classes to generate a WSDL file.
Note: java2wsdl is available only for the current production 2.0.x series of CXF. For the upcoming 2.1 versions, please use java2ws instead.
Example
java2wsdl org.apache.hello_world_soap_http.Greeter
java2wsdl -cp ./tmp org.apache.hello_world_soap_http.Greeter
java2wsdl -o hello.wsdl org.apache.hello_world_soap_http.Greeter
java2wsdl -o hello.wsdl -t http://cxf.apache.org org.apache.hello_world_soap_http.Greeter
(See below for usage with Apache Ant and Maven.)
Arguments
The arguments used to manage the WSDL file generation are reviewed in the following table.
Option |
Interpretation |
-? |
Displays the online help for this utility. |
-help |
-h |
-o |
Specifies the name of the generated WSDL file. |
-cp |
Specify the SEI and types class search path of directories and zip/jar files. |
-soap12 |
Specifies that the generated WSDL is to include a SOAP 1.2 binding. |
-t |
Specifies the target namespace to use in the generated WSDL file. |
-servicename |
Specifies the value of the generated service element's name attribute. |
-v |
Displays the version number for the tool. |
-verbose |
Displays comments during the code generation process. |
-quiet |
Suppresses comments during the code generation process. |
-s |
The directory in which the generated source files are placed, mostly in jaxws mode, it will generate the wrapper beans and fault beans |
-classdir |
The directory in which the generated sources are compiled into. If not specified, the files are not compiled. |
-portname |
Specify the port name to use in the generated wsdl. |
-createxsdimports |
Output schemas to separate files and use imports to load them instead of inlining them into the wsdl. |
-d |
The directory in which the output files are placed. |
classname |
Specifies the name of the SEI class. Note this is the compiled class, not a reference to its source file. |
You must include the classname argument. All other arguments are optional and may be listed in any order. This tool will search and load the service endpoint class and types classes. Make certain these classes are on the CLASSPATH or in a location identified through the -cp flag.
Using java2wsdl with Ant
The java2wsdl command can be wrapped inside an Ant target as shown below:
<?xml version="1.0"?>
<project name="cxf java2wsdl" basedir=".">
<property name="cxf.home" location ="/usr/myapps/cxf-2.0.1"/>
<property name="build.classes.dir" location ="${basedir}/build/classes"/>
<path id="cxf.classpath">
<pathelement location="${build.classes.dir}"/>
<fileset dir="${cxf.home}/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="cxfJavaToWSDL">
<java classname="org.apache.cxf.tools.java2wsdl.JavaToWSDL" fork="true">
<arg value="-o"/>
<arg value="hello.wsdl"/>
<arg value="service.Greeter"/>
<classpath>
<path refid="cxf.classpath"/>
</classpath>
</java>
</target>
</project>
Make sure you set the "fork=true" attribute for the <java/> task as shown above. Also, remember to keep each word or flag within the command line options in its own <arg/> element (e.g., do not use <arg value="-o hello.wsdl"/>, but split them up into two <arg/> elements as done here.)
Maven Plugins
In CXF we have a Maven plugin, called "cxf-codegen-plugin", which includes a "java2wsdl" goal. You can find more information in Using CXF with maven.