Hi, Eric,
In general the easiest way how to setup latest JAXB version:
1) put jaxb-api.jar into $JAVA_HOME/jre/lib/endorsed
2) put jaxb-impl.jar, jaxb-xjc.jar into the classpath
But I think for JBoss you have to use it's own endorsed dir.
--
Best regards.
Iaroslav
On 04/04/12 17:57, ebenzacar_at_gmail.com wrote:
> Hi,
>
> I'm running a webapp in JBoss 7.0.2 and I am running into an
> ArrayIndexOutOfBounds exception with JAXB marshaller. I'm using
> JDK_1.6.0_29. From a web search, this is a bug that was fixed in a
> subsequent version of JAXB.
>
> So I downloaded jaxb-impl.jar 2.2.5 via Maven and included it within my
> war. However it has not made any difference. When I startup my app, I
> have included the following class to log the implementation being used:
>
> /**
> * Print the JAXB Implementation information
> */
> public static void outputJaxpImplementationInfo() {
> logger.debug(getImplementationInfo("DocumentBuilderFactory",
> DocumentBuilderFactory.newInstance().getClass()));
> logger.debug(getImplementationInfo("XPathFactory",
> XPathFactory.newInstance().getClass()));
> logger.debug(getImplementationInfo("TransformerFactory",
> TransformerFactory.newInstance().getClass()));
> logger.debug(getImplementationInfo("SAXParserFactory",
> SAXParserFactory.newInstance().getClass()));
> }
>
> /**
> * Get the JAXB implementation information for a particular class
> * @param componentName
> * @param componentClass
> * @return
> */
> private static String getImplementationInfo(String componentName, Class
> componentClass) {
> CodeSource source =
> componentClass.getProtectionDomain().getCodeSource();
> return MessageFormat.format(
> "{0} implementation: {1} loaded from: {2}",
> componentName,
> componentClass.getName(),
> source == null ? "Java Runtime" : source.getLocation());
> }
>
> This produces the following output:
> 10:28:27,402 INFO [stdout] (MSC service thread 1-14) 2012-04-04
> 10:28:27,402 DEBUG cws.cs.lendingsimulationservice.util.JAXBUtil -
> DocumentBuilderFactory implementation:
> __redirected.__DocumentBuilderFactory loaded from:
> file:/C:/servers/jboss-as-7.0.2.Final/jboss-modules.jar
> 10:28:27,403 INFO [stdout] (MSC service thread 1-14) 2012-04-04
> 10:28:27,403 DEBUG cws.cs.lendingsimulationservice.util.JAXBUtil -
> XPathFactory implementation: __redirected.__XPathFactory loaded from:
> file:/C:/servers/jboss-as-7.0.2.Final/jboss-modules.jar
> 10:28:27,404 INFO [stdout] (MSC service thread 1-14) 2012-04-04
> 10:28:27,404 DEBUG cws.cs.lendingsimulationservice.util.JAXBUtil -
> TransformerFactory implementation: __redirected.__TransformerFactory
> loaded from: file:/C:/servers/jboss-as-7.0.2.Final/jboss-modules.jar
> 10:28:27,406 INFO [stdout] (MSC service thread 1-14) 2012-04-04
> 10:28:27,406 DEBUG cws.cs.lendingsimulationservice.util.JAXBUtil -
> SAXParserFactory implementation: __redirected.__SAXParserFactory loaded
> from: file:/C:/servers/jboss-as-7.0.2.Final/jboss-modules.jar
>
>
> I've tried the following but see no changes either:
> 1) just dropping the jar in my war,
> 2) putting both the api and impl jars in JAVA_HOME/jre/lib/endorsed,
> 3) setting
> -Djavax.xml.bind.context.factory=com.sun.xml.bind.v2.ContextFactory
>
> No matter what I try, I always seem to be using the v2.1 that is
> bundled with the JRE.
>
>
> So two questions arise:
> 1) How do I properly bundle the new version of JAXB in my app
> 2) How can I confirm that I am running the new version? Is the above
> code snippet valid, or is there a bug in there as well?
>
> Thanks for any help/advice!
>
> Eric