Vamos a generar las clases necesarias para generar un cliente de un Web Service a partir de su WSDL.
Nos basaremos en el proyecto HelloWorld de hace unas semanas, y aquí le añadimos seguridad. En este proyecto devolvíamos el saludo según el nombre que nos pasaban como parámetro a través del Web Service.
Para generar las clases auxiliares utilizaremos SoapUI:
Tendremos que tener bien localizada en nuestro equipo la herramienta wsimport.bat, que nos descargamos con todo el paquete de la implementación estándar de SUN (de JAX-WS):
Nos ha generado un directorio con los fuentes y otro con las clases ya compiladas:
Escribir el cliente con ayuda de estas clases es tan fácil como esto:
package client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; public class HelloClient { public static void main(String[] args) { HelloService service = null; try { // Creamos el servicio con el WSDL URL wsdlLocation = new URL("http://localhost:7001/wsc/HelloService?WSDL"); String targetNamespace="http://services/"; String name="HelloService"; service = new HelloService( wsdlLocation, new QName(targetNamespace, name)); Hello port = service.getHelloPort(); // Añadimos capacidades de seguridad a la llamada BindingProvider provider = (BindingProvider) port; provider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "user"); provider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "12345678"); //Mostramos el resultado System.out.println(port.sayHello(args[0])); } catch (MalformedURLException e ) { e.printStackTrace(); } } } |