JAXB 2.0 : Vista Rápida (I)

(Imagen: Rembrandt - Cristo en la tormenta en el lago de Galilea)

JAXB 2.0 define un binding para JAVA/XML estándar, para obtener representaciones Java de componentes de esquemas XML y viceversa. Este binding asocia un conjunto de clases Java con un esquema XML, de modo que las instancias de este esquema puedan ser manipuladas mediante métodos Java.

Tenemos dos escenarios para empezar con el binding:

  1. Comenzar por Java: Las clases Java ya existen y se utilizan para generar un esquema XML con el generador de esquemas de JAXB 2.0.
  2. Comenzar de un esquema XML: El esquema ya existe y las clases Java y el binding son creados mediante el compilador de esquemas de JAXB 2.0

Algunas características interesantes de JAXB son:

Binding de esquemas XML a representaciones Java
Las implementaciones de JAXB 2.0 nos proveen de un compilador de esquemas, que nos genera clases Java en función a un esquema XML. Cada clase generada nos permite acceder al contenido del componente del esquema correspondiente mediante getters y setters. Así, los elementos y atributos de un tipo son mapeados a propiedades de una clase Java.

Mapping de tipos Java a esquemas XML
JAX-WS 2.0 hace uso de esta característica de JAXB para generar el WSDL de una clase Java desplegada como Web Service. Para esto, los parámetros y tipos devueltos por el método Java desplegado como una wsdl:operation determinan los componentes del esquema en la sección wsdl:types (esta sección contiene los elementos del esquema XML y las definiciones de tipos usados en el WSDL).

Las implementaciones de JAXB nos proveen de un generados de esquemas, que crea esquemas en base a clases existentes. Este generador examina las propiedades JavaBean y las mapea a atributos y elementos. Se utilizan anotaciones para personalizar este mapeo.

Anotaciones para Mapping
Las anotaciones para mapping son el mecanismo de JAXB 2.0 para personalizar el binding Java/XML. El generador de esquemas descrito en la sección anterior, requiere como inputs un conjunto de clases, y un conjunto de anotaciones para mapping (aunque de no existir, se toman valores por defecto).

Aquí un ejemplito, donde se mapea la propiedad PurchaseOrderNumber al elemento de esquema orderNum:

public class PurchaseOrder{
//...
@XmlElement(name="orderNum")
String getPurchaseOrderNumber();
void setPurchaseOrderNumber(String po);

}



También, al generar clases Java de un esquema XML (la forma inversa), el código Java que genera JAXB contiene anotaciones que documentan los componentes XML de los cuáles fueron mapeados.

Lenguaje de Binding
El lenguaje de binding de JAXB 2.0 nos permite anotaciones en XML que nos permiten personalizar la representación Java de un esquema XML. Se utiliza para darle forma a los tipos Java utilizados como parámetros y tipos de retorno de una SEI (Service Endpoint Interface).

A diferencia de las anotaciones, que siempre van entre líneas dentro del código Java, las personalizaciones de lenguaje de binding pueden estar dentro del esquema XML o en un archivo de configuración separado.

Basado en el capítulo 2 de SOA Using Java Web Services de Mark D. Hansen

Publicar un comentario