You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2010/02/22 19:53:45 UTC
svn commit: r915015 -
/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
Author: kwsutter
Date: Mon Feb 22 18:53:45 2010
New Revision: 915015
URL: http://svn.apache.org/viewvc?rev=915015&view=rev
Log:
OPENJPA-1516. Introduce prepareForPooling method on EntityManagerImpl to allow for more efficient EntityManager "clear" operations. This also allows to go outside of the spec just a bit and clean up resources before pooling as well.
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=915015&r1=915014&r2=915015&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Mon Feb 22 18:53:45 2010
@@ -1108,6 +1108,23 @@
throw new ArgumentException(flushMode.toString(), null, null, false);
}
+ /*
+ * Used by Java EE Containers that wish to pool OpenJPA EntityManagers. The specification
+ * doesn't allow the closing of connections with the clear() method. By introducing this
+ * new method, we can do additional processing (and maybe more efficient processing) to
+ * properly prepare an EM for pooling.
+ */
+ public void prepareForPooling() {
+ assertNotCloseInvoked();
+ clear();
+ _broker.lock(); // since this direct close path is not protected...
+ try {
+ _broker.getStoreManager().close();
+ } finally {
+ _broker.unlock();
+ }
+ }
+
public void clear() {
assertNotCloseInvoked();
_broker.detachAll(this, false);