Index: /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EjbModule.java =================================================================== --- /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EjbModule.java (revision 78947) +++ /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EjbModule.java (working copy) @@ -472,6 +472,31 @@ xacmlFile.toURL()); } } + + // Create persistenceManager + iter = containerOrdering.listIterator(); + while( iter.hasNext() ) + { + Container con = (Container) iter.next(); + if(con.getBeanMetaData().isEntity()) + { + ClassLoader oldCl = SecurityActions.getContextClassLoader(); + SecurityActions.setContextClassLoader(con.getClassLoader()); + con.pushENC(); + try + { + ((EntityContainer)con).getPersistenceManager().setContainer(con); + ((EntityContainer)con).getPersistenceManager().create(); + } + finally + { + con.popENC(); + // Reset classloader + SecurityActions.setContextClassLoader(oldCl); + } + } + } + } catch (Exception e) { @@ -547,6 +572,33 @@ log.error("unexpected exception stopping Container: " + con.getJmxName(), e); } // end of try-catch } + + // Stop persistenceManager + iter = containerOrdering.listIterator(); + while( iter.hasNext() ) + { + Container con = (Container) iter.next(); + if(con.getBeanMetaData().isEntity()) + { + ClassLoader oldCl = SecurityActions.getContextClassLoader(); + SecurityActions.setContextClassLoader(con.getClassLoader()); + con.pushENC(); + try + { + ((EntityContainer)con).getPersistenceManager().stop(); + } + catch(Exception e) + { + log.error("unexpected exception stopping persistence manager. ", e); + } + finally + { + con.popENC(); + // Reset classloader + SecurityActions.setContextClassLoader(oldCl); + } + } + } } protected void destroyService() throws Exception @@ -635,6 +687,25 @@ } } } + + // Destroy persistenceManager + if(con.getBeanMetaData().isEntity()) + { + ClassLoader oldCl = SecurityActions.getContextClassLoader(); + SecurityActions.setContextClassLoader(con.getClassLoader()); + con.pushENC(); + try + { + ((EntityContainer)con).getPersistenceManager().destroy(); + ((EntityContainer)con).getPersistenceManager().setContainer(con); + } + finally + { + con.popENC(); + // Reset classloader + SecurityActions.setContextClassLoader(oldCl); + } + } // cleanup container con.setBeanMetaData(null); Index: /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EntityContainer.java =================================================================== --- /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EntityContainer.java (revision 78947) +++ /home/emuckenh/svn/as/trunk/server/src/main/org/jboss/ejb/EntityContainer.java (working copy) @@ -308,8 +308,8 @@ instanceCache.create(); // Init persistence - persistenceManager.setContainer(this); - persistenceManager.create(); +// persistenceManager.setContainer(this); +// persistenceManager.create(); // Initialize the interceptor by calling the chain Interceptor in = interceptor; @@ -348,6 +348,9 @@ ci.start(); } + // +// persistenceManager.start(); + // Start instance cache instanceCache.start(); @@ -395,7 +398,7 @@ instancePool.stop(); // Stop persistence - persistenceManager.stop(); +// persistenceManager.stop(); // Stop instance cache instanceCache.stop(); @@ -451,8 +454,8 @@ } // Destroy persistence - persistenceManager.destroy(); - persistenceManager.setContainer(null); +// persistenceManager.destroy(); +// persistenceManager.setContainer(null); // Destroy the pool instancePool.destroy();