Con JAX-WS 2.x, al igual que era posible con Xfire, podemos crear dinámicamente un proxy de un servicio web sin necesidad de recurrir a tools (wsimport) si disponemos de la interfaz Java del servicio web (SEI) anotada correctamente.
Ej:
@WebService(name=»ServiceWSPort», targetNamespace=»https://www.viafirma.com/blog-xnoccio/serviceWS»)
public interface ServiceWS {
@WebMethod
public String ping(Strin hola);
}
Para poder invocar este Servicio Web, lo normal sería generar las clase cliente proxy desde el WSDL, pero un mecanismo mas sencillo es simplemente hacer uso de las capacidades dinámicas de JAX-WS para generar en caliente una implementación cliente de esta interfaz:
Ej:
URL wsdlURL=new URL(«http://hostname:8080/path/ServiceWS?wsdl»);
Qname serviceQname=new Qname(«http://xnoccio.com/serviceWS»,»ServiceWSService);
Qname postQname=new Qname(«http://xnoccio.com/serviceWS»,»ServiceWSPort);
Service service=Service.create(wsdlURL,serviceQname);
ServiceWS clienteProxyWS=(ServiceWS) service.getPort(portQname,ServiceWS.class);
clienteProxyWS.ping(«hola mundo»);