You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2010/07/07 00:09:41 UTC
svn commit: r961032 - in /openejb/trunk/openejb3:
assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/ma...
Author: dblevins
Date: Tue Jul 6 22:09:41 2010
New Revision: 961032
URL: http://svn.apache.org/viewvc?rev=961032&view=rev
Log:
Added some debug logging for EntityManager creation and closing
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java?rev=961032&r1=961031&r2=961032&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java Tue Jul 6 22:09:41 2010
@@ -285,7 +285,7 @@ public class TomcatJndiBuilder {
}
JtaEntityManagerRegistry jtaEntityManagerRegistry = SystemInstance.get().getComponent(JtaEntityManagerRegistry.class);
- JtaEntityManager jtaEntityManager = new JtaEntityManager(jtaEntityManagerRegistry, factory, ref.properties, ref.extended);
+ JtaEntityManager jtaEntityManager = new JtaEntityManager(ref.persistenceUnitName, jtaEntityManagerRegistry, factory, ref.properties, ref.extended);
Object object = jtaEntityManager;
setResource(resource, object);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=961032&r1=961031&r2=961032&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Tue Jul 6 22:09:41 2010
@@ -25,7 +25,6 @@ import org.apache.openejb.core.Transacti
import org.apache.openejb.core.JndiFactory;
import org.apache.openejb.core.ivm.naming.CrossClassLoaderJndiReference;
import org.apache.openejb.core.ivm.naming.IntraVmJndiReference;
-import org.apache.openejb.core.ivm.naming.IvmContext;
import org.apache.openejb.core.ivm.naming.JaxWsServiceReference;
import org.apache.openejb.core.ivm.naming.JndiReference;
import org.apache.openejb.core.ivm.naming.JndiUrlReference;
@@ -42,7 +41,6 @@ import org.apache.openejb.persistence.Jt
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.core.timer.TimerServiceWrapper;
-import org.apache.xbean.naming.context.WritableContext;
import org.omg.CORBA.ORB;
import javax.ejb.EJBContext;
@@ -62,11 +60,9 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
-import java.util.Collections;
import java.io.Serializable;
/**
@@ -324,7 +320,7 @@ public class JndiEncBuilder {
throw new OpenEJBException("PersistenceUnit '" + contextInfo.unitId + "' not found for EXTENDED ref '" + contextInfo.referenceName + "'");
}
- JtaEntityManager jtaEntityManager = new JtaEntityManager(jtaEntityManagerRegistry, factory, contextInfo.properties, contextInfo.extended);
+ JtaEntityManager jtaEntityManager = new JtaEntityManager(contextInfo.persistenceUnitName, jtaEntityManagerRegistry, factory, contextInfo.properties, contextInfo.extended);
Reference reference = new PersistenceContextReference(jtaEntityManager);
bindings.put(normalize(contextInfo.referenceName), reference);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java?rev=961032&r1=961031&r2=961032&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java Tue Jul 6 22:09:41 2010
@@ -17,8 +17,10 @@
*/
package org.apache.openejb.persistence;
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.LogCategory;
+
import java.util.Map;
-import java.util.Set;
import javax.persistence.FlushModeType;
import javax.persistence.LockModeType;
@@ -45,18 +47,23 @@ import javax.persistence.metamodel.Metam
* be thrown when entity manger is accessed.
*/
public class JtaEntityManager implements EntityManager {
+
+ private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB.createChild("persistence"), JtaEntityManager.class);
+
private final JtaEntityManagerRegistry registry;
private final EntityManagerFactory entityManagerFactory;
private final Map properties;
private final boolean extended;
+ private final String unitName;
- public JtaEntityManager(JtaEntityManagerRegistry registry, EntityManagerFactory entityManagerFactory, Map properties) {
- this(registry, entityManagerFactory, properties, false);
-
+ public JtaEntityManager(JtaEntityManagerRegistry registry, EntityManagerFactory entityManagerFactory, Map properties, String unitName) {
+ this(unitName, registry, entityManagerFactory, properties, false);
}
- public JtaEntityManager(JtaEntityManagerRegistry registry, EntityManagerFactory entityManagerFactory, Map properties, boolean extended) {
+
+ public JtaEntityManager(String unitName, JtaEntityManagerRegistry registry, EntityManagerFactory entityManagerFactory, Map properties, boolean extended) {
if (registry == null) throw new NullPointerException("registry is null");
if (entityManagerFactory == null) throw new NullPointerException("entityManagerFactory is null");
+ this.unitName = unitName;
this.registry = registry;
this.entityManagerFactory = entityManagerFactory;
this.properties = properties;
@@ -64,7 +71,7 @@ public class JtaEntityManager implements
}
private EntityManager getEntityManager() {
- return registry.getEntityManager(entityManagerFactory, properties, extended);
+ return registry.getEntityManager(entityManagerFactory, properties, extended, unitName);
}
private boolean isTransactionActive() {
@@ -91,6 +98,7 @@ public class JtaEntityManager implements
private void closeIfNoTx(EntityManager entityManager) {
if (!extended && !isTransactionActive()) {
entityManager.close();
+ logger.debug("Closed EntityManager(unit=" + unitName + ", hashCode=" + entityManager.hashCode() + ")");
}
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java?rev=961032&r1=961031&r2=961032&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java Tue Jul 6 22:09:41 2010
@@ -18,6 +18,9 @@
package org.apache.openejb.persistence;
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.LogCategory;
+
import java.util.Map;
import java.util.HashMap;
import javax.persistence.EntityManager;
@@ -35,6 +38,9 @@ import javax.transaction.TransactionSync
* incoherence.
*/
public class JtaEntityManagerRegistry {
+
+ private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB.createChild("persistence"), JtaEntityManager.class);
+
/**
* Registry of transaction associated entity managers.
*/
@@ -67,11 +73,12 @@ public class JtaEntityManagerRegistry {
* @param entityManagerFactory the entity manager factory from which an entity manager is required
* @param properties the properties passed to the entity manager factory when an entity manager is created
* @param extended is the entity manager an extended context
+ * @param unitName
* @return the new entity manager
* @throws IllegalStateException if the entity manger is extended and there is not an existing entity manager
* instance already registered
*/
- public EntityManager getEntityManager(EntityManagerFactory entityManagerFactory, Map properties, boolean extended) throws IllegalStateException {
+ public EntityManager getEntityManager(EntityManagerFactory entityManagerFactory, Map properties, boolean extended, String unitName) throws IllegalStateException {
if (entityManagerFactory == null) throw new NullPointerException("entityManagerFactory is null");
EntityManagerTxKey txKey = new EntityManagerTxKey(entityManagerFactory);
boolean transactionActive = isTransactionActive();
@@ -99,6 +106,7 @@ public class JtaEntityManagerRegistry {
return entityManager;
} else {
+
// create a new entity manager
EntityManager entityManager;
if (properties != null) {
@@ -107,10 +115,12 @@ public class JtaEntityManagerRegistry {
entityManager = entityManagerFactory.createEntityManager();
}
+ logger.debug("Created EntityManager(unit=" + unitName + ", hashCode=" + entityManager.hashCode() + ")");
+
// if we are in a transaction associate the entity manager with the transaction; otherwise it is
// expected the caller will close this entity manager after use
if (transactionActive) {
- transactionRegistry.registerInterposedSynchronization(new CloseEntityManager(entityManager));
+ transactionRegistry.registerInterposedSynchronization(new CloseEntityManager(entityManager, unitName));
transactionRegistry.putResource(txKey, entityManager);
}
return entityManager;
@@ -282,9 +292,11 @@ public class JtaEntityManagerRegistry {
private static class CloseEntityManager implements Synchronization {
private final EntityManager entityManager;
+ private String unitName;
- public CloseEntityManager(EntityManager entityManager) {
+ public CloseEntityManager(EntityManager entityManager, String unitName) {
this.entityManager = entityManager;
+ this.unitName = unitName;
}
public void beforeCompletion() {
@@ -292,6 +304,7 @@ public class JtaEntityManagerRegistry {
public void afterCompletion(int i) {
entityManager.close();
+ logger.debug("Closed EntityManager(unit=" + unitName + ", hashCode=" + entityManager.hashCode() + ")");
}
}
}