Download and launch Apache Axis2 - it comes with a sample web service which is by default available at http://localhost:8080/axis2/services/Version - we will be using this as the service to write our JAX-WS client.
2. JAX-WS
The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services. It is part of the Java EE platform from Sun Microsystems. Like the other Java EE APIs, JAX-WS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.The Reference Implementation of JAX-WS is developed as an open source project and is part of project GlassFish.
3. Axis2 and JAX-WS
http://axis.apache.org/axis2/java/core/docs/jaxws-guide.html
4. JAX-WS client
First we need to generate the Stub classes for the service we are going to invoke. This can be done using the wsimport tool. The tool is available at [JAVA_HOME]\bin distribution.
$ pwd /Users/prabath/blog/jax-ws $ wsimport -p org.wso2 http://localhost:8080/axis2/services/Version?wsdlThe above resulted with the following error.
[ERROR] A class/interface with the same name "wso2.Exception" is already in use. Use a class customization to resolve this conflict. line 11 of http://localhost:8080/axis2/services/Version?wsdlSo I got to hand edit the wsdl and save it as wsdl.xml - and run wsimport against wsdl.xml
$ pwd /Users/prabath/blog/jax-ws $ wsimport -p org.wso2 wsdl.xml $ jar -cvf version-stub.jar *Following is the client code - and you need to have version-stub.jar, which was generated in the previous step.
package jax.ws.client;
import javax.xml.ws.WebServiceRef;
import org.wso2.Version;
import org.wso2.VersionPortType;
public class VersionClient {
@WebServiceRef(wsdlLocation = "http://localhost:8080/axis2/services/Version?wsdl")
public static void main(String[] args) {
try {
Version service = new Version();
VersionPortType port = service.getVersionHttpSoap11Endpoint();
String response = port.getVersion().getReturn().getValue();
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}
}