Servicios Web con Java EE Daniel López Fuentes Laura Tolsada Bris Sergio Tejero López Irene Clemente Bueno Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2
Introducción Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma. Wikipedia 3 Introducción Existen gran cantidad de implementaciones que ayudan al desarrollo de Servicios Web para cada uno de los lenguajes de programación. Sun provee de una serie de tecnologías en su versión Java EE para el desarrollo de Servicios Web. Éstas tecnologías son estándares de desarrollo, así como API s que especifican el comportamiento de implementaciones. En las últimas especificaciones Sun crea una nueva especificación que facilita el desarrollo de Web Services a través de anotaciones. 4
5 Descripción Principales características y ventajas Envío de información mediante protocolos estándares. Independencia del lenguaje, protocolo y plataforma Alto nivel de interoperabilidad. No requiere un conocimiento especializado de la implementación del servicio. Opera en forma asíncrona. Desventajas y limitaciones: Limitaciones para realizar transacciones Su rendimiento es bajo si se compara con otros modelos de computación distribuida. Pueden esquivar medidas de seguridad basadas en firewall 6
Descripción 7 8
Desarrollo Tecnologías para Servicios Web en Java EE: Especificación de Implementación http://jcp.org/en/jsr/detail?id=109 JAX-WS: Java API for XML Web Services https://jax-ws.dev.java.net/ JAX-RPC: Java API for XML-based RPC https://jax-rpc.dev.java.net/ JAXB: Java Architecture for XML Binding https://jaxb.dev.java.net/ SAAJ: SOAP with Attachments API for Java https://saaj.dev.java.net/ StAX:Streaming API for XML http://java.sun.com/webservices/docs/1.6/tutorial/doc/sjsxp.html Web Services Metadata for the Java Platform http://jcp.org/en/jsr/detail?id=181 9 Desarrollo Desarrollo con JAX-RPC: JAX-RPC es un API estándar en Java para implementar e invocar operaciones de servicios Web SOAP mediante el paradigma de RPC Forma parte del API de Java EE Como cualquier otro API de Java EE, está formada por un conjunto de interfaces (Paquete javax.xml.rpc) Existen múltiples implementaciones (por ejemplo Apache Axis) El código escrito por el desarrollador no depende de la implementación concreta de JAX-RPC que se utilice Ejemplo: http://java.sun.com/developer/technicalarticles/webservices/g etstartjaxrpc/index.html 10
Desarrollo Desarrollo con JAX-WS: JAX-WS es el sustituto de JAX-RPC. En lo que respecta al soporte para RPC, conceptualmente es equivalente a JAX-RPC Usa anotaciones para facilitar el desarrollo Proporciona también soporte para invocaciones asíncronas Actualmente la mayor parte de las aplicaciones Java usan JAX-RPC La implementación de referencia forma parte del proyecto GlassFish de Sun y se llama JAX-WS RI (Reference Implementation) Ejemplo: http://java.sun.com/developer/technicalarticles/j2se/jax_ws_2 11 12
Uso Cualquier desarrollo que incluya integración de distintos sistemas, hoy en día utiliza Servicios Web. Muchas empresa que quieren vender acceso a un servicio que ha desarrollado opta por los Servicios Web como medida comercial. http://api.google.com/googlesearch.wsdl 13 14
Conclusiones Los Web Services son uno de los pilares de los proyectos de integración, ya que permiten la comunicación entre aplicaciones de distinto lenguaje ejecutadas sobre cualquier plataforma. La arquitectura SOA favorece en gran medida el mantenimiento y escalabilidad de las aplicaciones, disminuyendo el acoplamiento de módulos. Java EE presenta dos API s para el desarrollo de Web services: JAX-RPC y JAX-WS. La mayoría de las implementaciones actuales de Web Services utilizan JAX-RPC ya que JAX-WS todavía no está extendido entre los desarrolladores. JAX-WS es más novedoso y simplifica en gran medida el desarrollo de Web Services por el uso de anotaciones. 15 16
Referencias Referencias Proporcionadas: http://en.wikipedia.org/wiki/jax-ws http://java.sun.com/blueprints/guidelines/designing_webservices/html/ http://java.sun.com/webservices/jaxrpc/overview.html http://java.sun.com/javaee/5/docs/tutorial/doc/bnayl.html 17 Referencias Otras Referencias: http://es.wikipedia.org/wiki/servicio_web http://www.desarrolloweb.com/articulos/1883.php http://java.sun.com/webservices/docs/2.0/tutorial/doc/ http://edocs.bea.com/wls/docs70/webserv/index.html http://www.alphaworks.ibm.com/tech/webservicestoolkit http://www.oracle.com/technology/products/webservices_manager/index.html http://www.programacion.com/java/tutorial/apis_xml/0/ http://java.sun.com/developer/technicalarticles/j2se/jax_ws_2/ http://www.dosideas.com/wiki/jax-ws http://tundidor.com/blog/?p=22 http://java.sun.com/javaee/technologies/webservices/ http://www.tic.udc.es/~fbellas/teaching/adoo/tema3apartado3.4.pdf 18