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

One thought on “JAX-WS: Generando un cliente de WS con SoapUI

  1. Buenos dias.
    Una consulta: ¿esta parte del codigo tambien la genera soap ui?

    // 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

    En mi cliente soap tambien tengo activado la conexion por proxy para poder consumir un ws ¿el codigo para autenicarse en el proxy tambien puede ser generado por soapui?

    Gracias.

    Saludos.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.