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.
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.
Grandes servicios web:
Restricciones
 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.
Implementación de servicios
web desde NetBeans
 Crear un proyecto de aplicación web (también se
puede hacer con una aplicación Enterprise).
 Crear el servicio web desde el proyecto, con un
paquete. Netbeans crea la clase @WebService
asociada, cuyo nombre es el del servicio.
Implementación de servicios
web desde NetBeans, II
 Definir los Beans auxiliares y los
@WebMethods.
 Al construir y desplegar la aplicación,
Netbeans ejecuta wsgen y gestiona la
publicación del servicio.
 Se puede probar el servicio desde un
navegador seleccionando la opción “Test”
sobre el mismo.
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, II
 @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”);
…

Web services

  • 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.
    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.
  • 7.
    Grandes servicios web: Restricciones 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.
  • 8.
    Implementación de servicios webdesde NetBeans  Crear un proyecto de aplicación web (también se puede hacer con una aplicación Enterprise).  Crear el servicio web desde el proyecto, con un paquete. Netbeans crea la clase @WebService asociada, cuyo nombre es el del servicio.
  • 9.
    Implementación de servicios webdesde NetBeans, II  Definir los Beans auxiliares y los @WebMethods.  Al construir y desplegar la aplicación, Netbeans ejecuta wsgen y gestiona la publicación del servicio.  Se puede probar el servicio desde un navegador seleccionando la opción “Test” sobre el mismo.
  • 10.
    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
  • 11.
    Ejemplo de servicioweb, II  @WebService public class Buscador { … @WebMethod List<Doc> busca(String palabra) }  class Doc { int apariciones(String palabra) … // Métodos set y get }
  • 12.
    Esquema del funcionamiento deservicios web ServidorCliente obj.f(arg)objRef.f(arg) objobjRef registro Interfaz común
  • 13.
    Programación del cliente Esquema de funcionamiento del cliente:  Instanciar una referencia al servicio  Obtener una referencia a un objeto servidor  Ejecutar métodos …
  • 14.
    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”); …