En un artículo anterior vimos cómo crear servicios web interoperables en Java utilizando Axis.
Que un servicio web sea interoperable quiere decir que puede ser utilizado tanto por clientes programados en .NET como en Java o en cualquier otro lenguaje de programación, es decir, funcionan independientemente de la plataforma del cliente que los consume.
Ya hemos visto anteriormente en otros artículos cómo crear clientes para consumir servicios web utilizando el lenguaje de programación C# .NET así que, en este artículo, vamos a ver cómo podemos hacer lo mismo pero en Java.
Para crear un cliente en Java que consuma tanto servicios web programados en Java con Axis como servicios web hechos utilizando C# .NET o servicios web implementados utilizando cualquier otro lenguaje de programación podemos seguir los pasos que se indican a continuación.
Antes de nada os recuerdo de nuevo que si el servicio web está implementado en otro lenguaje de programación diferente al del cliente, la interacción entre los dos sólo funcionará si el servicio web es interoperable, de ahí la importancia de poner interés a la hora de crear los servicios web para que pasen los tests de interoperabilidad del WS-I.
- En primer lugar tendremos que generar el código del proxy (Stubs) para el cliente utilizando la herramienta WSDL2Java que proporciona y partiendo del fichero WSDL del servicio web que escojamos. Lo haremos de la siguiente forma:
java org.apache.axis.wsdl.WSDL2Java "http://www.misitio.es/MiServicioWeb.wsdl"
- Entre las clases que la herramienta habrá generado automáticamente se encontrarán al menos las cuatro siguientes. Abriremos cada uno de los ficheros para distinguir las clases según hereden de:
- java.rmi.Remote: La llamaremos claseRemote.
- javax.xml.rpc.Service: Esta será la clase claseService.
- org.apache.axis.client.Service: La clase claseServiceLocator.
- org.apache.axis.client.Stub
- A continuación compilamos el código de estás cuatro clases que ha generado automáticamente la herramienta WSDL2Java utilizando javac.
- Ahora crearemos el cliente propiamente dicho. Para ello vamos a utilizar las clases que acabamos de compilar, que son los stubs generados especialmente para consumir el servicio web que habíamos escogido. La clase cliente quedará de una forma parecida a esta:
import PaqueteDondeSeEncuentranLasClasesGeneradas.*; public class cliente { public static void main(String [] args) throws Exception { // Primero instanciamos el "service locator" claseService service = new claseServiceLocator(); // Ahora usamos el servicio para obtener el stub claseRemote stb = service.getLoQueSea(); // Por último hacemos la llamada al método del servicio web stb.MetodoDelServicioWeb(); . . . } }
- Con esto ya tenemos todo el código. Sólo nos queda compilar la clase cliente y ejecutar para comprobar que todo funciona perfectamente.