WSImport command is presend in Bin folder of JDK.
Using this command we can create a glue code from exposed/Published Web service.
We can use this glue code from the consumer or client code to consume result of exposed web service.
Step-1- Check Web service is exposed by hitting WSDL url from browser.
Step-2- Create a Glue code using WSImport command as shown below
wsimport -keep http://localhost:9999/ws/hello?wsdl
Once you execute above command glue code is created at the respective folder.
we will get follwing two class
package com.test.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Action;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebService(name = "HelloWorld", targetNamespace = "http://ws.test.com/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface HelloWorld {
/**
*
* @param arg0
* @return
* returns java.lang.String
*/
@WebMethod
@WebResult(partName = "return")
@Action(input = "http://ws.test.com/HelloWorld/getHelloWorldRequest", output = "http://ws.test.com/HelloWorld/getHelloWorldResponse")
public String getHelloWorld(
@WebParam(name = "arg0", partName = "arg0")
String arg0);
}
package com.test.ws;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebServiceClient(name = "HelloWorldImplService", targetNamespace = "http://ws.test.com/", wsdlLocation = "http://localhost:9999/ws/hello?wsdl")
public class HelloWorldImplService
extends Service
{
private final static URL HELLOWORLDIMPLSERVICE_WSDL_LOCATION;
private final static WebServiceException HELLOWORLDIMPLSERVICE_EXCEPTION;
private final static QName HELLOWORLDIMPLSERVICE_QNAME = new QName("http://ws.test.com/", "HelloWorldImplService");
static {
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://localhost:9999/ws/hello?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}
HELLOWORLDIMPLSERVICE_WSDL_LOCATION = url;
HELLOWORLDIMPLSERVICE_EXCEPTION = e;
}
public HelloWorldImplService() {
super(__getWsdlLocation(), HELLOWORLDIMPLSERVICE_QNAME);
}
public HelloWorldImplService(WebServiceFeature... features) {
super(__getWsdlLocation(), HELLOWORLDIMPLSERVICE_QNAME, features);
}
public HelloWorldImplService(URL wsdlLocation) {
super(wsdlLocation, HELLOWORLDIMPLSERVICE_QNAME);
}
public HelloWorldImplService(URL wsdlLocation, WebServiceFeature... features) {
super(wsdlLocation, HELLOWORLDIMPLSERVICE_QNAME, features);
}
public HelloWorldImplService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public HelloWorldImplService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) {
super(wsdlLocation, serviceName, features);
}
/**
*
* @return
* returns HelloWorld
*/
@WebEndpoint(name = "HelloWorldImplPort")
public HelloWorld getHelloWorldImplPort() {
return super.getPort(new QName("http://ws.test.com/", "HelloWorldImplPort"), HelloWorld.class);
}
/**
*
* @param features
* A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the
* @return
* returns HelloWorld
*/
@WebEndpoint(name = "HelloWorldImplPort")
public HelloWorld getHelloWorldImplPort(WebServiceFeature... features) {
return super.getPort(new QName("http://ws.test.com/", "HelloWorldImplPort"), HelloWorld.class, features);
}
private static URL __getWsdlLocation() {
if (HELLOWORLDIMPLSERVICE_EXCEPTION!= null) {
throw HELLOWORLDIMPLSERVICE_EXCEPTION;
}
return HELLOWORLDIMPLSERVICE_WSDL_LOCATION;
}
}
Import that folder as in Eclipse
Create new project with same name of the folder and automatically all the files will be added in the package
Step-3- Create Client code that will consume the this glue code to call Published W/S.
Create a package com.test.client and file named as HelloWorldClient.
package com.test.client;
import com.test.ws.HelloWorld;
import com.test.ws.HelloWorldImplService;
public class HelloWorldClient{
public static void main(String[] args) {
HelloWorldImplService helloService = new HelloWorldImplService();
HelloWorld hello = helloService.getHelloWorldImplPort();
System.out.println(hello.getHelloWorld("siddhu calling from WSImport Glue code"));
}
}
Execute this class and we will be able to call the Web service using glue code created by WSImport command.
Client --(request)-> Glue code created by WSImport -(request)-> Web service Exposed by publisher
Client <-- by="" code="" created="" exposed="" glue="" p="" publisher="" response="" service="" web="" wsimport="">-->
Using this command we can create a glue code from exposed/Published Web service.
We can use this glue code from the consumer or client code to consume result of exposed web service.
Step-1- Check Web service is exposed by hitting WSDL url from browser.
Step-2- Create a Glue code using WSImport command as shown below
wsimport -keep http://localhost:9999/ws/hello?wsdl
Once you execute above command glue code is created at the respective folder.
we will get follwing two class
package com.test.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Action;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebService(name = "HelloWorld", targetNamespace = "http://ws.test.com/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface HelloWorld {
/**
*
* @param arg0
* @return
* returns java.lang.String
*/
@WebMethod
@WebResult(partName = "return")
@Action(input = "http://ws.test.com/HelloWorld/getHelloWorldRequest", output = "http://ws.test.com/HelloWorld/getHelloWorldResponse")
public String getHelloWorld(
@WebParam(name = "arg0", partName = "arg0")
String arg0);
}
package com.test.ws;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebServiceClient(name = "HelloWorldImplService", targetNamespace = "http://ws.test.com/", wsdlLocation = "http://localhost:9999/ws/hello?wsdl")
public class HelloWorldImplService
extends Service
{
private final static URL HELLOWORLDIMPLSERVICE_WSDL_LOCATION;
private final static WebServiceException HELLOWORLDIMPLSERVICE_EXCEPTION;
private final static QName HELLOWORLDIMPLSERVICE_QNAME = new QName("http://ws.test.com/", "HelloWorldImplService");
static {
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://localhost:9999/ws/hello?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}
HELLOWORLDIMPLSERVICE_WSDL_LOCATION = url;
HELLOWORLDIMPLSERVICE_EXCEPTION = e;
}
public HelloWorldImplService() {
super(__getWsdlLocation(), HELLOWORLDIMPLSERVICE_QNAME);
}
public HelloWorldImplService(WebServiceFeature... features) {
super(__getWsdlLocation(), HELLOWORLDIMPLSERVICE_QNAME, features);
}
public HelloWorldImplService(URL wsdlLocation) {
super(wsdlLocation, HELLOWORLDIMPLSERVICE_QNAME);
}
public HelloWorldImplService(URL wsdlLocation, WebServiceFeature... features) {
super(wsdlLocation, HELLOWORLDIMPLSERVICE_QNAME, features);
}
public HelloWorldImplService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public HelloWorldImplService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) {
super(wsdlLocation, serviceName, features);
}
/**
*
* @return
* returns HelloWorld
*/
@WebEndpoint(name = "HelloWorldImplPort")
public HelloWorld getHelloWorldImplPort() {
return super.getPort(new QName("http://ws.test.com/", "HelloWorldImplPort"), HelloWorld.class);
}
/**
*
* @param features
* A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the
features
parameter will have their default values.* @return
* returns HelloWorld
*/
@WebEndpoint(name = "HelloWorldImplPort")
public HelloWorld getHelloWorldImplPort(WebServiceFeature... features) {
return super.getPort(new QName("http://ws.test.com/", "HelloWorldImplPort"), HelloWorld.class, features);
}
private static URL __getWsdlLocation() {
if (HELLOWORLDIMPLSERVICE_EXCEPTION!= null) {
throw HELLOWORLDIMPLSERVICE_EXCEPTION;
}
return HELLOWORLDIMPLSERVICE_WSDL_LOCATION;
}
}
Import that folder as in Eclipse
Create new project with same name of the folder and automatically all the files will be added in the package
Step-3- Create Client code that will consume the this glue code to call Published W/S.
Create a package com.test.client and file named as HelloWorldClient.
package com.test.client;
import com.test.ws.HelloWorld;
import com.test.ws.HelloWorldImplService;
public class HelloWorldClient{
public static void main(String[] args) {
HelloWorldImplService helloService = new HelloWorldImplService();
HelloWorld hello = helloService.getHelloWorldImplPort();
System.out.println(hello.getHelloWorld("siddhu calling from WSImport Glue code"));
}
}
Execute this class and we will be able to call the Web service using glue code created by WSImport command.
Out Put :- Hello World JAX-WS example calling Web Service using Java API for AML using Web Service:siddhu calling from WSImport Glue code
Client --(request)-> Glue code created by WSImport -(request)-> Web service Exposed by publisher
Client <-- by="" code="" created="" exposed="" glue="" p="" publisher="" response="" service="" web="" wsimport="">-->