Servicios
Web
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
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
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
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.
Servicios web
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.
• 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.
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
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 }
Esquema del funcionamiento de
servicios web
ServidorCliente
obj.f(arg)objRef.f(arg)
objobjRef
registro
Interfaz común
Programación del cliente
• Esquema de funcionamiento del cliente:
– Instanciar una referencia al servicio
– Obtener una referencia a un objeto servidor
– Ejecutar métodos …
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”);
…
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)

Servicios web

  • 1.
  • 2.
    Servicios web • Sonprogramas 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 • JavaEE 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 • Losgrandes 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 • Lautilizació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.
  • 6.
  • 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 @WebServiceshan 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 servicioweb • 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 servicioweb • @WebService public class Buscador {… @WebMethod List<Doc> busca(String palabra) } • class Doc { int apariciones(String palabra) … // Métodos set y get }
  • 11.
    Esquema del funcionamientode 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 publicclass 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) permiteinterceptar 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)