Deserialization fails to work using custom Classloader
------------------------------------------------------
Key: JBPM-2703
URL:
https://jira.jboss.org/jira/browse/JBPM-2703
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 4.2
Reporter: Nicolas Leroux
Fix For: jBPM 4.x
I am trying to use jBPM outside a servlet container and when storing a variable in the
execution context, retrieving it I have:
Caught: java.lang.ClassNotFoundException: Blah
This is the same bug as described in:
http://jira.codehaus.org/browse/GROOVY-1627 . I think this is the following issue as
well:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4340158 .
{quote}Java uses the last defined ClassLoader to loader the class. In many environments
this might mean that the wrong class loader is chosen or that it works one day and the
other day not. {quote}
The following code fixes the problem (in
org.jbpm.pvm.internal.type.converter.SerializableToBytesConverter line 71 in the revert
method:
{code}
ObjectInputStream ois = new ObjectInputStream(bais) {
protected Class resolveClass(ObjectStreamClass objectStreamClass) throws IOException,
ClassNotFoundException {
return Class.forName(objectStreamClass.getName(), true,
Thread.currentThread().getContextClassLoader());
}
};
{code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira