2010-09-03 19 views
7

He estado jugando con Apache CXF, en particular, los diversos enlaces de datos que admite: JAXB (por defecto), MTOM, Aegis y XMLBeans. Dado que todos estos son compatibles, supongo que cada uno tiene sus méritos. Se me ocurrió esto:Dentro de CXF, ¿por qué usar cualquier otro enlace que JAXB? (Archivos adjuntos MTOM, Aegis, XMLBeans, ...)

  • Obviamente, MTOM es preferible cuando se trata de grandes archivos adjuntos.
  • JAXB depende de las anotaciones, por lo que es menos adecuado cuando la modificación de las clases está restringida.
  • Aegis no tiene herramienta wsdl2java, por lo que es menos adecuado para el desarrollo de "contrato primero", es decir, comience con un WSDL y genere su código Java a partir de eso.
  • Se parece que Aegis proporciona un poco más de control sobre la asignación entre clases Java y XML a través de su sintaxis declarativa en Clase archivos .aegis.xml. Por otro lado, no pude imaginar ningún escenario en el que JAXB no hiciera el truco.

me encontré con esta pregunta yuxtaposición de JAXB y XMLBeans, pero no da una visión global:

JAXB vs Apache XMLBeans

Además de estos ingenuos, consideraciones a priori, ¿tiene alguna sangre-y- experiencias de tripa que apoyarían el uso de cualquier otro enlace además de JAXB? Lo estoy preguntando desde el punto de vista de CXF, pero si me viene a la mente alguna otra opción (por ejemplo, Castor), no dudes en dar más detalles.

Respuesta

3

Si empiezo desde cero para crear un primer servicio web WSDL, entonces definitivamente recomendaría seguir con JAXB el 95% del tiempo (tal vez incluso más). Definitivamente es el enlace de datos mejor probado en CXF y funciona bastante bien.

Donde los otros DataBindings vienen en son por lo general de uno de los dos casos:

1) casos de primer uso de Java donde usted tiene algo que ya está escrito en Java que desea exponer como un servicio web con poca o ninguna modificación al código Aegis tiene sus fortalezas aquí, ya que está diseñado para poder manejar una gama más amplia de cosas que JAXB. Sin embargo, si PUEDE modificar el código, agregar anotaciones JAXB generalmente no es tan difícil. Si tienes "frijoles" en su mayoría normales, no es gran cosa.

2) Las aplicaciones existentes que utilizan una asignación particular. Si tiene aplicaciones existentes que esperan beans XMLBeans (o beans SDO si usa 2.3-SNAPSHOT of CXF, o beans JiBX si siguen el proyecto GSoC), entonces el uso de los otros enlaces de datos podría ayudar eliminando las asignaciones necesarias de JAXB para esos modelos de objetos .

Espero que ayude un poco.

3

Recuerde que JAXB is a specification por lo que hay varias implementaciones: Metro (implementación de referencia, MOXy (Soy el plomo tecnología), etc.

JAXB puede ser utilizado a partir de las clases de Java o esquema XML Si tiene clases. que no se pueden modificar, las implementaciones individuales de JAXB ofrecen extensiones para manejar eso.Ver metadatos externalizable de moxy:

JAXB fue diseñado para trabajar con archivos adjuntos MTOM ver el archivo adjunto marshaller/unmarshaller.

:

moxy ha asignaciones que ofrece control total de su objeto a XML Ver vinculante basado XPath

Cuestiones relacionadas