Esta regla está relacionada con los cambios y conflictos de clase de inicialización de arquitectura Java para enlaces XML (JAXB) que pueden producirse cuando se realiza la migración desde versiones de WebSphere Application Server anteriores a la V7.0. Existen dos escenarios de migración de JAXB que han dado problemas con las aplicaciones de cliente. El primero está relacionado con las aplicaciones migradas desde WebSphere 6.1 Feature Pack for Web Services. El segundo escenario está relacionado con las aplicaciones de cliente que empaquetan una implementación de JAXB y se migran a WebSphere V7.0 o posterior.
En WebSphere V7.0, JAXB 2.1 se suministra como parte del entorno de ejecución de Java 6.
Antes de la versión 7.0, WebSphere 6.1 Feature Pack for Web Services suministraba JAXB 2.0, que utilizaba una clase de inicialización diferente a la que se utiliza en JAXB 2.1 o 2.2 (V8.0).
Si la aplicación especifica que se utilice la clase de inicialización antigua, se generarán excepciones de clase no encontrada cuando se ejecute la aplicación.
La clase de inicialización puede definirse utilizando la propiedad javax.xml.bind.context.factory. La clase de inicialización antigua es com.sun.xml.bind.ContextFactory.
Si el nombre de clase antiguo se establece en la propiedad javax.xml.bind.context.factory, obtendrá una excepción java.lang.ClassNotFoundException cuando utilice las bibliotecas JAXB disponibles con Java 6.
Esta regla busca el método javax.xml.bind.JAXBContext.newInstance que se utiliza para obtener un JAXBContext. Si utiliza JAXB, debe comprobar en la aplicación el uso de la fábrica de contexto antigua. La regla también detectará los literales de serie "com.sun.xml.bind.ContextFactory" o "com.sun.xml.bind.DefaultJAXBContextImpl" en el código Java, pero no explora los archivos de propiedades donde estos valores se establecen a menudo.
También se pueden establecer en las propiedades del sistema Java.
Las propiedades JAXB normalmente se cargan desde un archivo jaxb.properties. Explore manualmente los archivos de propiedades de la aplicación para determinar si se ha definido la antigua fábrica de contexto.
Para explorar los archivos de propiedades en Eclipse, seleccione Buscar > Archivo....
En el campo Contiene el texto, escriba com.sun.xml.bind.ContextFactory.
En el campo Patrones de nombre de archivo, escriba *.properties.
Repita la búsqueda para la serie com.sun.xml.bind.DefaultJAXBContextImpl.
Cuando se utiliza JAXB en WebSphere V7 o V8, la clase de inicialización predeterminada es com.ibm.xml.xlxp2.jaxb.JAXBContextFactory si no se establece la propiedad javax.xml.bind.context.factory.
Para el segundo escenario, los clientes que han empaquetado una implementación de JAXB como parte de la aplicación antes de V7 también pueden experimentar los problemas que se acaban de describir o cambios de comportamiento cuando se realiza la migración a WebSphere V7.0 o posterior. Esto ocurre cuando se cargan las versiones JAXB 2.1 o 2.2 proporcionadas como parte del entorno de ejecución Java, en lugar de la implementación de JAXB que se suministra con la aplicación. En el artículo Habilitación de una aplicación JAX-WS de terceros en WebSphere Application Server V7 se describe cómo solucionar los problemas del cargador de clases si desea continuar utilizando su implementación de JAXB.
Para obtener información adicional, consulte las siguientes referencias