-
Bug
-
Resolution: Unresolved
-
Critical
-
JBossAS-4.2.1.GA
-
None
I am having ClassCastException when instantiating JAXBContext within my web application.
javax.xml.bind.JAXBException: ClassCastException: attempting to cast jar:file:/C:/Documentum/jboss4.3.0/server/DctmServer_MethodServer/deploy/dfs.ear/APP-INF/lib/jaxb-api.jar!/javax/xml/bind/JAXBContext.class to jar:file:/C:/Documentum/jboss4.3.0/jdk/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class. Please make sure that you are specifying the proper ClassLoader.
javax.xml.bind.ContextFinder.handleClassCastException(ContextFinder.java:96)
javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:205)
javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
HelloWorldServlet.marshallCode(HelloWorldServlet.java:62)
HelloWorldServlet.doGet(HelloWorldServlet.java:43)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Here is the line of code where the problem occurs:
JAXBContext dataContext = JAXBContext.newInstance(MySimpleSouceData.class);
Basically my web application (WAR) is deployed as part of an .EAR file with jaxb-api.jar and jaxb-impl.jar included in the .ear's APP-INF/lib. The web application does not have any of the JAXB libraries included in the .war file.
The jboss-app.xml has been set to as follows:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-app>
<loader-repository>
com.emc.documentum.fs:loader=emc-dfs.ear
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
<library-directory>
APP-INF/lib
</library-directory>
</jboss-app>
I do not understand why the JAXBContext class instance from rt.jar (loaded by bootstrap/system classloader) is reference here when the configuration explicitly state to use the web application instance first (i.e. java2ParentDelegation=false).
When I remove the jboss-app.xml file, the ClassCastException goes away. It seems the JAXBContext class is loaded by:
org.jboss.mx.loading.UnifiedClassLoader3@2a2cc
{ url=file:/C:/Documentum/jboss4.3.0/server/DctmServer_MethodServer/deploy/jbossws.sar/ ,addedOrder=12}Is this a JBoss classloading bug?
What actually happens when jboss-app.xml is not provided? What is the default behaviour? And how is it that ClassCastException does not happen here??