Ahora toca revisar los estándares (JSR's) vistos desde el lado de un cliente que utilice Java SE 6 o Java EE 5. Igual que en el post anterior, vamos a tomar prestado un dibujito de SOA Using Java Web Services para mostrar las cosas más claramente:
- Lo primero que debe hacer un cliente para invocar un Web Service es generar una SEI (Service Endpoint Interface), mediante una herramienta que transforme WSDL en código Java. Una SEI nos brinda una representación Java del Web Service (WS) que invocamos. Para generar la SEI usamos JAXB (convierte los parámetros XML del WSDL en parámetros Java del SEI), anotaciones de WS-Metadata y JAX-WS.
- En tiempo de ejecución, utilizamos una instancia de javax.xml.Service (de JAX-WS) he invocamos al método getPort para obtener una instancia del SEI generado en el paso anterior. Esta instancia es llamada en el gráfico Proxy Instance, y como se ve también en el gráfico, implementa nuestra SEI.
- Después, se inicia la invocación del WS al invocar uno de los métodos de la SEI en Proxy Instance. El runtime JAX-WS traduce los parámetros JAXB y la invocación del método en un request SOAP que es enviado al Web Service. Antes que el request SOAP (insisto, generado por el runtime JAX-WS) sea enviado al endpoint del Web Service, se procede a invocar a los Handlers (y esto también lo hace el runtime JAX-WS). Los handlers son definidos por el usuario y pueden manipular los mensajes SOAP (de request o de response). Para definir Handlers se hace uso de anotaciones definidas en la especificación WS-Metadata.
- Después de que los Handlers hacen su trabajo, se envía el request SOAP al Web Service y se obtiene como resultado un response SOAP. A este response SOAP se le aplican los Handlers y parámetros del response SOAP son deserializados por el runtime JAXB
- Finalmente, la Proxy Instance devuelve una instancia JAXB como resultado de la invocación del método.
Publicar un comentario