xml jaxb axis2 unmarshalling

xml - JAXB Unmarshall creó un objeto vacío



axis2 unmarshalling (4)

Estoy usando JAXB para desmarcar un archivo XML en un árbol de objetos. El objeto raíz no es nulo, pero todos sus miembros son nulos a pesar de que hay datos en el archivo XML. Mis clases de objetos fueron generados con Axis2 desde wsdls. Tengo la clase ObjectFactory, la clase jaxb.index, la anotación package.info, etc.

Mi problema es el mismo que en esta discusión: http://old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html

Lo primero y más importante: ¿hay alguna manera de conseguir que llene los datos correctamente?

Si no es así, ¿hay una buena biblioteca de sustitutos para Axis2 o JAXB que haga lo mismo pero que jueguen bien entre sí?


El archivo package-info.java debe ser compilado. Eclipse debe encontrar todos los archivos .java y compilarlos. Si compila desde la línea de comandos y permite que javac busque dependencias, NO lo encontrará. Entonces cuando corras obtendrás objetos vacíos. Parece un error en JAXB para no importar al menos ese archivo en alguna parte. Y el error debería decirte que es posible compilar ese archivo.


Por defecto, JAXB ignora silenciosamente los errores. No puedo ver ninguna razón por la que esta es la configuración predeterminada. Intenta agregar este código para lanzar una excepción si algo sale mal.

unmarshaller.setEventHandler( new ValidationEventHandler() { public boolean handleEvent(ValidationEvent event ) { throw new RuntimeException(event.getMessage(), event.getLinkedException()); } });


Recientemente tuve un problema similar y pude solucionarlo de la siguiente manera:

1) Arreglar el archivo xsd. En mi caso, me he asegurado de que todos los elementos complejos en xsd se refieran a su tipo correspondiente utilizando el atributo ref, en lugar de declararlos con el atributo type.

He verificado si mi xsd es correcto o no creando un archivo xml desde la opción de archivo de esquema XML en Eclipse.

Antes de la corrección, el elemento raíz en el archivo xml estaba vacío. Después de arreglar el xsd, el xml se creó correctamente con algunos valores de muestra.

2) limpiar y reconstruir Es obligatorio limpiar antes de volver a generar las clases.


Solo quiero agregar que cuando Axis2 se usa junto con Rampart (cifrado de cuerpo de SOAP) y JAXB, este problema siempre ocurre.

Ver para más detalles: AXIS2-4981