Index: modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentObjectInputStream.java =================================================================== --- modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentObjectInputStream.java (revision 6636) +++ modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentObjectInputStream.java (working copy) @@ -52,8 +52,7 @@ catch (ClassNotFoundException e) { // trying to get it from deployment ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); - ClassLoader deploymentClassLoader = - new DeploymentClassLoader(contextClassLoader, deploymentId); + ClassLoader deploymentClassLoader = ReflectUtil.getDeploymentClassLoader(deploymentId, contextClassLoader); return Class.forName(desc.getName(), false, deploymentClassLoader); } } Index: modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java =================================================================== --- modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java (revision 6636) +++ modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java (working copy) @@ -390,16 +390,20 @@ Thread currentThread = Thread.currentThread(); ClassLoader original = currentThread.getContextClassLoader(); + DeploymentClassLoader deploymentClassLoader = getDeploymentClassLoader(deploymentId, original); + currentThread.setContextClassLoader(deploymentClassLoader); + + return original; + } + + public static DeploymentClassLoader getDeploymentClassLoader(String deploymentId, ClassLoader original) { RepositoryCache repositoryCache = EnvironmentImpl.getFromCurrent(RepositoryCache.class); DeploymentClassLoader deploymentClassLoader = repositoryCache.getDeploymentClassLoader(deploymentId, original); if (deploymentClassLoader==null) { deploymentClassLoader = new DeploymentClassLoader(original, deploymentId); repositoryCache.setDeploymentClassLoader(deploymentId, original, deploymentClassLoader); } - - currentThread.setContextClassLoader(deploymentClassLoader); - - return original; + return deploymentClassLoader; } public static void uninstallDeploymentClassLoader(ClassLoader original) {