Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-2703

Deserialization fails to work using custom Classloader

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • jBPM 4.4
    • jBPM 4.2
    • Runtime Engine
    • None

    Description

      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 .

      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.

      The following code fixes the problem (in org.jbpm.pvm.internal.type.converter.SerializableToBytesConverter line 71 in the revert method:

      ObjectInputStream ois = new ObjectInputStream(bais) {
      	   protected Class resolveClass(ObjectStreamClass objectStreamClass) throws IOException, ClassNotFoundException {
      	       return Class.forName(objectStreamClass.getName(), true, Thread.currentThread().getContextClassLoader());
      	     }
      	   };
      

      Attachments

        Activity

          People

            swiderski.maciej Maciej Swiderski (Inactive)
            pepite_jira Nicolas Leroux (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: