Hi,

Just a post concerning the generation of JAVA webservice client for CXF and AXIS web services via an ANT script.

More information on sites on proxies creation:
http://cxf.apache.org/docs/wsdl-to-java.html
http://axis.apache.org/axis/java/ant/axis-wsdl2java.html

  • First, download the CXF and AXIS SDK librairies:
    C:\SDK\axis2-1.7.7
    C:\SDK\cfx-3.0.3
    C:\SDK\jdk1.7.0_17
     
  • Create a specific folder for the generated proxies sources (for example, WSProxyGenerator\src_generated)
     
  • References all needed libairies (JAR) in your project (for example lib/*.jar)
     
  • Create a properties file for the ANT script build.properties:
    cxf.home=C\:/SDK/cfx-3.0.3
    axis.home=C\:/SDK/axis2-1.7.7
    

     

  • Create a ANT script file build.xml containing the ANT targets create_proxy depending of init_proxy, create_proxy_cxf and create_proxy_axis targets:
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="ProxiesGenerator" default="create_proxy" basedir=".">
    	<property file="build.properties" />
    
    	<target name="create_proxy" depends="init_proxy,create_proxy_cxf,create_proxy_axis" >
    	</target>
    	
    	<target name="init_proxy">
    		<fail unless="cxf.home" message="Apache CXF home (cxf.home) not set" />
    		<path id="cxf.classpath">
    			<fileset dir="${cxf.home}/lib">
    				<include name="*.jar" />
    			</fileset>
    		</path>
    
    		<fail unless="axis.home" message="Apache AXIS home (axis.home) not set" />
    
    		<path id="axis.classpath">
    			<fileset dir="${axis.home}/lib">
    				<include name="*.jar" />
    			</fileset>
    			<fileset dir="${basedir}/lib">
    				<include name="*.jar" />
    			</fileset>
    		</path>
    
    		<delete includeemptydirs="true">
    			<fileset dir="${basedir}/src_generated">
    				<include name="**/*.java" />
    			</fileset>
    		</delete>
    		<mkdir dir="${basedir}/src_generated" />
    	</target>
    
    	<target name="create_proxy_cxf">
    	</target>
    
    	<target name="create_proxy_axis">
    	</target>
    </project>
    

     

 

CXF proxy generation

  • Create a file containing the URLs of CXF web services wsdllist_cxf.txt:
    https://myserver1.java.lu/services/core/MyObjectService?wsdl
    https://myserver1.java.lu/services/core/MyObjectService2?wsdl
    

     

  • Create a file for the binding-name simple-binding.xjb
    <?xml version="1.0" encoding="UTF-8"?>
    <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    	jaxb:version="2.0" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    	jaxb:extensionBindingPrefixes="xjc">
    	<jaxb:globalBindings>
    		<xjc:simple />
    		<xjc:serializable uid="1397139757393" />
    	</jaxb:globalBindings>
    </jaxb:bindings>
    

     

  • Create in the build.xml file the CXF target:
    	<target name="create_proxy_cxf">
    		<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
    			<arg value="-autoNameResolution" />
    			<arg value="-verbose" />
    			<arg value="-fe" />
    			<arg value="jaxws21" />
    			<arg value="-encoding" />
    			<arg value="Cp1252" />
    			<arg value="-d" />
    			<arg value="${basedir}/src_generated" />
    			<arg value="-b" />
    			<arg value="simple-binding.xjb" />
    			<arg value="-wsdlList" />
    			<arg value="wsdllist_cxf.txt" />
    			<classpath>
    				<path refid="cxf.classpath" />
    			</classpath>
    		</java>
    	</target>
    

     

 

AXIS proxy generation

  • Create in the build.xml file the CXF target:
    	<target name="create_proxy_axis">
    		<java classname="org.apache.axis.wsdl.WSDL2Java" fork="true">
    			<arg value="--verbose" />
    			<arg value="--Debug" />
    			<arg value="--output" />
    			<arg value="${basedir}/src_generated" />
    			<arg value="-u" />
    			<arg value="https://myserver2.java.lu/MyWebServices/services/MyWebService?wsdl" />
    			<classpath>
    				<path refid="axis.classpath" />
    			</classpath>
    		</java>
    	</target>
    

     

 

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="ProxiesGenerator" default="create_proxy" basedir=".">
	<property file="build.properties" />

	<target name="create_proxy" depends="init_proxy,create_proxy_cxf,create_proxy_axis" >
	</target>
	
	<target name="init_proxy">
		<fail unless="cxf.home" message="Apache CXF home (cxf.home) not set" />
		<path id="cxf.classpath">
			<fileset dir="${cxf.home}/lib">
				<include name="*.jar" />
			</fileset>
		</path>

		<fail unless="axis.home" message="Apache AXIS home (axis.home) not set" />

		<path id="axis.classpath">
			<fileset dir="${axis.home}/lib">
				<include name="*.jar" />
			</fileset>
			<fileset dir="${basedir}/lib">
				<include name="*.jar" />
			</fileset>
		</path>

		<delete includeemptydirs="true">
			<fileset dir="${basedir}/src_generated">
				<include name="**/*.java" />
			</fileset>
		</delete>
		<mkdir dir="${basedir}/src_generated" />
	</target>

	<target name="create_proxy_cxf">
		<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
			<arg value="-autoNameResolution" />
			<arg value="-verbose" />
			<arg value="-fe" />
			<arg value="jaxws21" />
			<arg value="-encoding" />
			<arg value="Cp1252" />
			<arg value="-d" />
			<arg value="${basedir}/src_generated" />
			<arg value="-b" />
			<arg value="simple-binding.xjb" />
			<arg value="-wsdlList" />
			<arg value="wsdllist_cxf.txt" />
			<classpath>
				<path refid="cxf.classpath" />
			</classpath>
		</java>
	</target>

	<target name="create_proxy_axis">
		<java classname="org.apache.axis.wsdl.WSDL2Java" fork="true">
			<arg value="--verbose" />
			<arg value="--Debug" />
			<arg value="--output" />
			<arg value="${basedir}/src_generated" />
			<arg value="-u" />
			<arg value="https://myserver2.java.lu/MyWebServices/services/MyWebService?wsdl" />
			<classpath>
				<path refid="axis.classpath" />
			</classpath>
		</java>
	</target>
</project>

 
Execute the ANT script build.xml, the proxies are generated in the src_generated folder:

Buildfile: C:\Workspaces\WSProxyGenerator\build.xml
init_proxy:
create_proxy_cxf:
      Loading FrontEnd jaxws21 ...
      Loading DataBinding jaxb ...
      wsdl2java -autoNameResolution -verbose -fe jaxws21 -encoding Cp1252 -d C:\Workspaces\WSProxyGenerator/src_generated -b simple-binding.xjb -wsdlList wsdllist_cxf.txt
      wsdl2java - Apache CXF 3.0.3
create_proxy_axis:
      Parsing XML file:  https://myserver2.java.lu/MyWebServices/services/MyWebService?wsdl
      Symbol Table
      -----------------------
      org.apache.axis.wsdl.symbolTable.DefinedType
...
      -----------------------
      Generating C:\Workspaces\WSProxyGenerator/src_generated\com\myjava\lu\myservice\webservice\services\myserviceWebService.java
      Generating C:\Workspaces\WSProxyGenerator/src_generated\com\myjava\lu\myservice\webservice\services\myserviceWebServiceSoapBindingStub.java
      Generating C:\Workspaces\WSProxyGenerator/src_generated\com\myjava\lu\myservice\webservice\services\myserviceWebServiceService.java
      Generating C:\Workspaces\WSProxyGenerator/src_generated\com\myjava\lu\myservice\webservice\services\myserviceWebServiceServiceLocator.java
create_proxy:
BUILD SUCCESSFUL
Total time: 11 seconds

 

Best regards,

Huseyin