Once your code is annotated, you can generate a WSDL contract for your service using the java2ws
command's -wsdl flag. For a detailed listing of options for the java2ws command see
java2ws in
To call the WSDL generator from Ant use the java task to execute the
org.apache.cxf.tools.java2ws.JavaToWS class and pass -wsdl as one of its arguments.
Example 1.8 shows a sample Ant target that calls the WSDL generator.
Example 1.8. Calling the WSDL Generator from Ant
<project name="java2ws" basedir=".">
<property name="fsf.home" location ="/usr/myapps/fsf-trunk"/>
<property name="build.classes.dir" location ="${basedir}/build/classes"/>
<path id="fsf.classpath">
<pathelement location="${build.classes.dir}"/>
<fileset dir="${fsf.home}/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="WSDLGen">
<java classname="org.apache.cxf.tools.java2ws.JavaToWS" fork="true">
<arg value="-wsdl"/>
<arg value="service.Greeter"/>
<classpath>
<path refid="fsf.classpath"/>
</classpath>
</java>
</target>
</project>![]() | Important |
|---|---|
You must set the Java task's fork to true. |
Example 1.9 shows the WSDL contract that is generated for the SEI shown in Example 1.7.
Example 1.9. Generated WSDL from an SEI
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://demo.eric.org/"
xmlns:tns="http://demo.eric.org/"
xmlns:ns1=""
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns2="http://demo.eric.org/types"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema>
<xs:complexType name="quote">
<xs:sequence>
<xs:element name="ID" type="xs:string" minOccurs="0"/>
<xs:element name="time" type="xs:string" minOccurs="0"/>
<xs:element name="val" type="xs:float"/>
</xs:sequence>
</xs:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getStockQuote">
<wsdl:part name="stockTicker" type="xsd:string">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getStockQuoteResponse">
<wsdl:part name="updatedQuote" type="tns:quote">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="quoteReporter">
<wsdl:operation name="getStockQuote">
<wsdl:input name="getQuote" message="tns:getStockQuote">
</wsdl:input>
<wsdl:output name="getQuoteResponse" message="tns:getStockQuoteResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="quoteReporterBinding" type="tns:quoteReporter">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getStockQuote">
<soap:operation style="rpc" />
<wsdl:input name="getQuote">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="getQuoteResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="quoteReporterService">
<wsdl:port name="quoteReporterPort" binding="tns:quoteReporterBinding">
<soap:address location="http://localhost:9000/quoteReporterService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>