Páginas

martes, 14 de febrero de 2012

Servicios Web y XML

Recientemente he estado trabajando con Servicio Web con Spring WS y me he encontrado algunos problemas de librerías relacionadas con Servicios Web y XML, especialmente al desplegar estos servicios en servidores de aplicaciones como Welogic o JBoss. Tras algunas tortas me ha quedado medianamente claro para qué sirven algunas de las librerías. En este post trato de aclarar algo para qué sirven todas estas librerías.

  • SAAJ (SOAP with Attachments API for Java). Proporciona una forma estándar de enviar documentos XML a través de Internet desde Java. Dicho de otra forma, SAAJ permite a producir y consumir mensajes acorde con la especificación SOAP 1.1 y SOAP con adjuntos. Otros datos:
    • Opera a un nivel inferior que JAX-RPC y JAX-WS que usan SAAJ.
    • Forma parte del JDK. Particularmente, la versión Java 6 incluye SAAJ 1.3
    • Para aplicaciones Web, la implementación es típicamente provista por el servidor de aplicaciones.
  • JAXP (Java Api for XML Processing). API Java (definido por Sun Microsystems) sirve para la manipulación y el tratamiento de archivos XML. Otros datos:
    • Es parte del JDK. En  la versión Java 6 podemos encontrar JAXP 1.4 mientras que en Java 5 encontramos la versión 1.3 que está obsoleta.
    • El JDK también proporciona una implementación (Xerces a partir de JDK5 y anteriormente Crimson).
  • JAXB (Java Architecture for XML Binding). Permite a los desarrolladores Java mapear clases Java a representaciones XML. JAXB proporciona dos características principales: la habilidad de convertir (marshal) objetos Java en XML y viceversa. En otras palabras, permite almacenar y extraer datos en memoria en cualquier formato XML sin la necesidad de tener que implementar código específico. Otros datos:
    • Es parte de JDK. Particularmente, la versión Java 6 (updated 4) viene con  JAXB 2.1
    • La implementación de referencia es parte del proyecto Glassfish
    • Aquí encontrarás una descripción más completa sobre JAXB
  • JAX-RPC (Java API XML para RPC) es una especificación para desarrolladores Java para el desarrollo de Web servicios basados en SOAP. Este API está obsoleto en favor de JAX-WS. Otros datos:
    • Tiene su propio modelo de mapeo de datos (data mapping model) que cubre el 90% de los esquemas. Los esquemas que no son cubiertos son mapeados  javax.xml.soap.SOAPElement.
    • El modelo controlador (handler model) está basado en SAAJ 1.2
    • Era el API de Servicios Web en el JDK1.4
  • Apache Xerces. Es una librería de Apache para el parseo, validación, serialización y manipulación de XML. Actualmente se encuentra en su versión 2 y aunque se puede encontrar como una librería independiente también forma parte del JDK. Otros datos:
    • Ofrece una implementación del API JAXP 1.4 entre otros APIs
    • Fue re-paquetizado bajo el paquete com.sun en el JDK5
    • La implementación es típicamente provista por el servidor de aplicaciones como se describe aquí.
  • Apache Xalan. Es un procesador XSLT para la transformación de documentos XML en documentos HTML, textos, u toros tipos de documentos XML. Otros datos:
    • Al igual que Xerces, forma parte del JDK y a partir de la versión 5 fue re-paquetizado bajo sun.com.
    • Implemente XPath entre otros.
    • La versión 1 ya no está soportada por lo que es recomendable trabajar con la versión 2.
  • JAX-WS (Java Api for XML Web Services) es el API Java que se utiliza para la creación de Web Service. JAX-WS forma parte del estándar Java EE. La implementación de referencia de JAX-WS es parte del proyecto GlassFish. En la plataforma Java EE 5, JAX-WS 2.0 reemplaza al API JAX-RPC (obsoleto). El cambio se basa en moverse hacia Web Services orientados a documentos (en vez de RPC). Otros datos:
    • Como modelo de mapeo de datos utiliza JAXB
    • El controlador de modelo (model handler) se base en SAAJ 1.3
    • Pasó a formar parte del JDK5 en su versión 2.0. La versión  JAX-WS 2.1 fue introducida en Java 6 Update 4.
    • JAX-WS 2.1 fue incluido en Java 6, particularmente en JDK 1.6.0_04 y superior.
    • JAX-RPC vs JAX-WS
Por último, dejo algunos enlaces interesantes:

No hay comentarios:

Publicar un comentario