2010-12-02 29 views
16

Tengo el servicio web REST (Jersey) que hace uso de algunos objetos de datos que se organizan/eliminan a XML. Los objetos de datos están en un proyecto/jar separado del que depende la guerra del servicio web.¿Dónde incluir el archivo jaxb.properties?

Estoy usando MOXy como mi implementación de JAXB desde que estoy implementando en Glassfish y eso ya está incluido. Sé que necesito un archivo jaxb.properties para establecer la aplicación JAXB a moxy con esta entrada:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 

La pregunta es, ¿debería el archivo jaxb.properties incluirse en el tarro objeto de datos o en la guerra o servicio web ¿ambos?

Respuesta

12

Usted empaqueta el archivo jaxb.properties con sus clases de modelo. GlassFish aún no incluye el paquete MOXy, pero puede agregarlo fácilmente. Echa un vistazo a mi blog para más información:

+5

¿Qué ocurre si las clases de mi modelo están distribuidas en más de un directorio? ¿Debo colocar un archivo 'jaxb.properties' en cada carpeta? – George

18

Si no quiere o no puede utilizar los jaxb.properties (que tiene una gran cantidad de paquete, el modelo está en un frasco externa , desea que sólo hay archivos de configuración de java y ...), se puede especificar directamente la JaxbContextFactory:

no crear el contexto usando:

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Person.class, ObjectFactory.class}, properties); 

Pero en cambio, especifique la fábrica de usar:

JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]{Person.class, ObjectFactory.class}, properties); 

donde la fábrica es:

import org.eclipse.persistence.jaxb.JAXBContextFactory; 

Es exactamente lo mismo, pero no se especifica explícitamente en el código de Java en lugar de forma implícita en una configuración archivo.

+0

Gracias, ayudó mucho. – eugene82

+0

Gracias. Ayudó a resolver uno de mis problemas críticos. – santhoshkumar

+0

Prefiero esta solución al archivo jax.properties que maven ignora durante las ejecuciones de prueba (al menos para mí). jc = JAXBContextFactory.createContext ("com.mymodels", null) me funcionó. – Nodoze