Jede Java-Anwendung kann auf WebServices zugreifen. Ant- oder Mavenscripts können einem die Anlage der Clientschnittstelle erheblich erleichtern. Im Vergleich zur Erstellung des Clientzugriffes über die IDE, sehe ich einen eindeutigen Vorteil bei der Wiederholbarkeit. Die Scripts können unabhängig von einer IDE, mit den gleichen Einstellungen ausgeführt werden.

Die bekanntesten Clienttools sind Axis2 und Apache-CXF.
Axis2 Anttask

[sourcecode language=”xml”] <target name="axisWsdl2java"> <path id="axis2.classpath"> <fileset dir="D:/libs/axis2/axis2-2.6.2/lib"> <include name="*/.jar"/> </fileset> </path> <taskdef name="axis2-wsdl2java" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.classpath"/> <axis2-wsdl2java overwrite="true" wsdlfilename="http://localhost:8080/service/Service?wsdl"/> </target> [/sourcecode]

CXF Anttask

[sourcecode language=”xml”]

<property name="cxf.home" location ="d:/libs/apache-cxf-2.6.2" /> <path id="cxf.classpath"> <fileset dir="${cxf.home}/lib"> <include name="*.jar"/> </fileset> </path>

<target name="cxfWSDLToJava"> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client"/> <arg value="-d"/> <arg value="${project.dir}/src_wsdl"/> <arg value="http://localhost:8080/service/Services?WSDL"/> <classpath> <path refid="cxf.classpath"/> </classpath> </java> </target>

[/sourcecode]

Java Code
In beiden Fällen werden alle in den WSDL definierten Klassen angelegt. Beim Service-Stub kann in beiden Fällen eine URL im Konstruktor übergeben werden. Bei Axis kann die URL als String-Wert ohne "?WSDL" Endung übergeben werden. CXF benötigt ein URL-Object mit dem vollständigen WSDL-Pfad.
Die URL-Generierung kann im Service-Stub Standardkonstruktor geprüft werden.
Unterschiede
Von der Verwendung, Geschwindigkeit und der Zuverlässigkeit konnte ich keine Unterschiede feststellen. Trotzdem gibt es WSDL-Files die nur von einer der beiden Frameworks richtig implementiert werden. In einem meiner Projekte hatte Axis, in der Version 2.6.2, Probleme mit einem WS das mit einem JBoss7.1 zur Verfügung gestellt wurde. Apache-CXF hatte damit keine Probleme.