Taller de Sistemas de Información 2 Web Services en Java y Java EE
Plataformas de Web Services Las plataformas de Web Services son un conjunto de herramientas para un lenguaje de programación específico Permiten: o o invocar Web Services realizar el deploy de Web Services Las plataformas tienen en general componentes en el servidor y en el cliente INCO - Facultad de Ingeniería Montevideo, Uruguay 2
Plataformas de Web Services Los componentes en el servidor se alojan usualmente en algún tipo de contenedor o o servidor Java EE, contenedor de servlets, etc Las plataformas de Web Services proveen en general tres subsistemas: o o o Invocación Serialización Deployment INCO - Facultad de Ingeniería Montevideo, Uruguay 3
Subsistema Invocación SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. INCO - Facultad de Ingeniería Montevideo, Uruguay 4
Subsistema Serialización Transformar instancias de clases Java en elementos XML y viceversa. SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. INCO - Facultad de Ingeniería Montevideo, Uruguay 5
Subsistema Deployment Este subsistema provee las herramientas para configurar un destino Java para que pueda ser invocado como un Web Service vía mensajes SOAP INCO - Facultad de Ingeniería Montevideo, Uruguay 6
Estándares Java para WS SAAJ (JSR67) JAXB (JSR 222) JAX-WS (JSR 224) WS-Metadata (JSR 181) WSEE (JSR 109) JAXR (JSR 93) INCO - Facultad de Ingeniería Montevideo, Uruguay 7
Estándares Java para WS Java SOA Cookbook. Eben Hewitt. O'Reilly. 2009. INCO - Facultad de Ingeniería Montevideo, Uruguay 8
SOAP with Attachments API for Java - SAAJ SOAP with Attachments API for Java (SAAJ, JSR 67) permite manipular envelopes SOAP de forma programática Es posible, por ejemplo, crear un envelope SOAP, agregarle un header, un body, etc y enviarlo por HTTP para invocar un WS //Create the message SOAPMessage m=messagefactory.newinstance().createmessage() //Get the envelope SOAPPart soappart = soapmsg.getsoappart(); SOAPEnvelope env = soappart.getenvelope(); INCO - Facultad de Ingeniería Montevideo, Uruguay 9
Java Architecture for XML Binding JAXB JAXB define un binding Java/XML estándar para convertir representaciones Java en componentes XML esquema y viceversa Apunta a facilitarle a los programadores el trabajar con instancias XML de un esquema SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. INCO - Facultad de Ingeniería Montevideo, Uruguay 10
The Java API for XML-Based Web Services JAX-WS JAX-WS es un API, basada en SAAJ, para consumir y proveer WS Remplaza la antigua JAX-RPC API La capa XML se oculta al programador, quien utiliza objetos generados por herramientas incluidas en Java SE 6 y Java EE 5 JAX-WS utiliza JAXB 2.0 para la conversión Java XML INCO - Facultad de Ingeniería Montevideo, Uruguay 11
Web Services Metadata for the Java Platform WS-Metadata Define un conjunto de anotaciones que permite configurar cómo el contenedor realizará el deploy de un WS a través de la clase Java anotada o @WebService, @WebMethod, @WebParam, etc En tiempo de deployment el contenedor interpreta estas anotaciones y genera los artefactos necesarios (por ejemplo, la representación del WSDL) INCO - Facultad de Ingeniería Montevideo, Uruguay 12
Web Services Metadata for the Java Platform WS-Metadata INCO - Facultad de Ingeniería Montevideo, Uruguay 13
Web Services for Java EE WSEE WSEE especifica una arquitectura para asegurar la portabilidad de las aplicaciones de Web Services entre servidores de aplicaciones Java EE Define los tipos de objetos que pueden utilizarse para implementar WS, cómo empaquetarlos, y qué anotaciones o descriptores utilizar para realizar el deploy INCO - Facultad de Ingeniería Montevideo, Uruguay 14
Estándares Java para WS en el Servidor SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. INCO - Facultad de Ingeniería Montevideo, Uruguay 15
Estándares Java para WS en el Cliente SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. INCO - Facultad de Ingeniería Montevideo, Uruguay 16
Java API for XML Registries JAXR JAXR es un API que permite la publicación y descubrimiento de Web Services en registros basados en XML Provee una capa de abstracción y brinda la habilidad de diseñar aplicaciones con un API java simple que puede interactuar con varios tipos de registros (como UDDI y ebxml) INCO - Facultad de Ingeniería Montevideo, Uruguay 17
Java API for XML Registries JAXR Java Web Services Architecture. Morgan Kaufmann Publishers 2003 INCO - Facultad de Ingeniería Montevideo, Uruguay 18
Java API for RESTful Web Services JAX-RS (JSR 311) JAX-RS utiliza anotaciones en POJOs para dar soporte al estilo RESTful Los métodos de clases que representan un recurso utilizan @Path para indicar su URI Además se proveen anotaciones para cada método HTTP (@GET, @PUT, etc.). INCO - Facultad de Ingeniería Montevideo, Uruguay 19
JAX-RS @Path("/msg") public class MsgResource { private static String msg = "Hello, world!"; @GET @Produces("text/plain") public String read() { return msg + "\n"; } @POST @Produces("text/xml") public String create(@formparam("m") String new_msg) { INCO - Facultad de Ingeniería Montevideo, Uruguay 20
Referencias SOA using Java Web Services. Mark D. Hansen. Prentice Hall 2007. Java Web Services: Up and Running, 1st Edition. Martin Kalin. O'Reilly. 2009 Java SOA Cookbook. Eben Hewitt. O'Reilly. 2009. Java EE Web Services Technologies http://java.sun.com/javaee/technologies/webservices/ INCO - Facultad de Ingeniería Montevideo, Uruguay 21