JAXBException: ClassCastException is thrown while running a process which uses JAXB marshalling inside custom workitem handler

Solution Verified - Updated -

Issue

  • Running a process with a custom workitem handler that is using JAXB marshalling fails with the following exception:
ERROR [stderr] (http-/127.0.0.1:8080-4) javax.xml.bind.JAXBException: ClassCastException: attempting to cast jar:file:/C:/BPMS/jboss-eap-6.1/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-2.jar!/javax/xml/bind/JAXBContext.class to jar:file:/C:/Program%20Files/Java/jdk1.7.0_51/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class.  Please make sure that you are specifying the proper ClassLoader.

17:56:55,620 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.ContextFinder.handleClassCastException(ContextFinder.java:115)
17:56:55,620 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:251)
17:56:55,620 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235)
17:56:55,621 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.ContextFinder.find(ContextFinder.java:432)
17:56:55,621 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637)
17:56:55,622 ERROR [stderr] (http-/127.0.0.1:8080-4)    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
17:56:55,622 ERROR [stderr] (http-/127.0.0.1:8080-4)    at com.test.CustomWorkItemHandler.executeWorkItem(CustomWorkItemHandler.java:55)
  • Also while using Apache HttpClient libraries like this:
    StringEntity input = new StringEntity(request);
    input.setContentType("application/xml");
    postRequest.setEntity(input);
    HttpResponse httpResponse = httpClient.execute(postRequest);

fails with the following error:

Process Instances failed to start: java.lang.LinkageError:loader constraint violation: when resolving method "org.apache.http.client.methods.HttpPost.setEntity(Lorg/apache/http/HttpEntity;)V" the class loader (instance of org/drools/core/common/ProjectClassLoader$InternalTypesClassLoader) of the current class, com/test/jbpm6/jaxb/customworkitem/TestCustomWorkItemHandler, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for resolved class, org/apache/http/client/methods/HttpPost, have different Class objects for the type tp/HttpEntity;)V used in the signature

Environment

  • Red Hat JBoss BPM Suite (BPMS)
    • 6.0.1

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content