2. Servicios web
• Son programas con funcionalidad accesible
a través de protocolo http que permiten la
ejecución remota de métodos y funciones
• Los clientes envían solicitudes de ejecución
de métodos y funciones y sus argumentos
• Los servidores responden enviando los
resultados solicitados
3. Servicios web
• Java EE 6 incluye “grandes” servicios web
(basados en la especificación JAX-WS) y
servicios web “reposados” (basados en la
especificación JAX-RS)
• Los servicios reposados optimizan el
ancho de banda y son más sencillos de
desarrollar
4. Servicios web
• Los grandes servicios web transmiten la
información a través de un protocolo
universal basado en XML, llamado SOAP
• Mediante servicios web, programas
escritos con tecnologías diferentes (Java
EE, .NET) pueden compartir información y
procedimientos de acceso a ella
estandarizados
5. Servicios web
• La utilización de un servicio web involucra:
– Un programa servidor capaz de publicar a
través de un registro referencias a objetos
servidores y a sus métodos y de serializar y
desserializar objetos.
– Un protocolo de publicación y acceso a
métodos y a objetos serializados.
– Un programa cliente capaz de acceder a
referencias publicadas de objetos servidores,
de hacer llamadas a sus métodos y de
serializar y desserializar otros objetos.
7. Grandes servicios web:
Requisitos
• Las clases cuyas instancias son objetos
servidores se anotan mediante @WebService.
Los métodos accesibles públicamente se anotan
mediante @WebMethod.
• Una herramienta auxiliar, wsgen, genera
artefactos necesarios para el despliegue del
servicio, incluyendo ficheros de clase que los
clientes pueden cargar a través de la red.
8. • Los @WebServices han de tener un
constructor sin argumentos
• Los @WebMethods tienen que ser
públicos
• Los argumentos y los objetos devueltos
por @WebMethods tienen que ser tipos
simples o Java Beans.
9. Ejemplo de servicio web
• Una aplicación que permite buscar
documentos que contienen una palabra y
devolverlos ordenados según el número
de veces que aparece la palabra se
puede implementar como sigue:
– Clase servidora: Buscador
• Método accesible: List<Doc> busca(palabra)
– Bean auxiliar: Doc
10. Ejemplo de servicio web
• @WebService
public class Buscador {…
@WebMethod
List<Doc> busca(String palabra) }
• class Doc {
int apariciones(String palabra)
… // Métodos set y get }
11. Esquema del funcionamiento de
servicios web
ServidorCliente
obj.f(arg)objRef.f(arg)
objobjRef
registro
Interfaz común
12. Programación del cliente
• Esquema de funcionamiento del cliente:
– Instanciar una referencia al servicio
– Obtener una referencia a un objeto servidor
– Ejecutar métodos …
13. Ejemplo de cliente
public class BuscadorClient { …
public static void main(String[] args) {
ws.client.BuscadorService serv =
new ws.client.BuscadorService();
ws.client.Buscador busc =
serv.getBuscadorPort();
List<Doc> rec = busc.busca(“servidor”);
…
14. Depuración
• Wsmonitor (wsmonitor.dev.java.net)
permite interceptar las llamadas de SOAP.
• Para la depuración el cliente debe hacer
las peticiones en el puerto 4040, donde
escucha Wsmonitor; éste las replica al
puerto 8080
• El monitor muestra las solicitudes y
respuestas (formato XML)