JAX-WS: Generando un cliente de WS con SoapUI

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:

Open generator wizard

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):

Tools and wizard

Nos ha generado un directorio con los fuentes y otro con las clases ya compiladas:

Package folder

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();
        }
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>