JAX-WS stands for Java API for XML Web Services.
Creating a Service Endpoint Interface (SEI)
package com.yairshinar.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style = Style.DOCUMENT)
public interface HelloName{
@WebMethod String getName(String name);
}
Creating a Service Implementation Bean (SIB) that implements all the methods of the SEI.
package com.yairshinar.ws;
import javax.jws.WebService;
@WebService(endpointInterface = "com.yairshinar.ws.HelloName")
public class HelloNameImplementation implements HelloName{
@Override
public String getName(String name) {
return "Hello " + name;
}
}
Create an endpoint publisher and run it:
import javax.xml.ws.Endpoint;
public class HelloNamePublisher{
public static void main(String[] args) {
Endpoint.publish("http://localhost:7000/ws/hello", new HelloNameImplementation());
}
}
you can then find a generated WSDL file at the published URL: http://localhost:7000/ws/hello?wsdl
Create a client that connects to the published service and invokes it’s method
package com.yairshinar.ws;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloNameClient{
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:7000/ws/hello?wsdl");
QName qname = new QName("http://com.yairshinar.ws/", "HelloNameImplementationService");
Service service = Service.create(url, qname);
HelloName hello = service.getPort(HelloName.class);
System.out.println(hello.getName("Yair"));
}
}