Author: rmannibucau
Date: Tue Jan  1 16:59:16 2013
New Revision: 1427463

URL: http://svn.apache.org/viewvc?rev=1427463&view=rev
Log:
TOMEE-691 better handling of pooling for JCA connectors

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ConnectorReference.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1427463&r1=1427462&r2=1427463&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Tue Jan  1 16:59:16 2013
@@ -17,6 +17,7 @@
 package org.apache.openejb.assembler.classic;
 
 import org.apache.geronimo.connector.GeronimoBootstrapContext;
+import org.apache.geronimo.connector.outbound.AbstractConnectionManager;
 import org.apache.geronimo.connector.work.GeronimoWorkManager;
 import org.apache.geronimo.connector.work.HintsContextHandler;
 import org.apache.geronimo.connector.work.TransactionContextHandler;
@@ -136,6 +137,7 @@ import javax.naming.InitialContext;
 import javax.naming.NameAlreadyBoundException;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
+import javax.resource.cci.ConnectionFactory;
 import javax.resource.spi.BootstrapContext;
 import javax.resource.spi.ConnectionManager;
 import javax.resource.spi.ManagedConnectionFactory;
@@ -1208,6 +1210,16 @@ public class Assembler extends Assembler
                 //Ignore
             }
 
+        } else if (object instanceof ConnectorReference) {
+            final ConnectorReference cr = (ConnectorReference) object;
+            try {
+                final ConnectionManager cm = cr.getConnectionManager();
+                if (cm != null && cm instanceof AbstractConnectionManager) {
+                    ((AbstractConnectionManager) cm).doStop();
+                }
+            } catch (Exception e) {
+                logger.debug("Not processing resource on destroy: " + 
className, e);
+            }
         } else if (logger.isDebugEnabled()) {
             logger.debug("Not processing resource on destroy: " + className);
         }
@@ -1857,6 +1869,14 @@ public class Assembler extends Assembler
             }
             logUnusedProperties(unset, serviceInfo);
 
+            if (connectionManager instanceof AbstractConnectionManager) {
+                try {
+                    ((AbstractConnectionManager) connectionManager).doStart();
+                } catch (Exception e) {
+                    logger.warning("Can't start connection manager", e);
+                }
+            }
+
             // service becomes a ConnectorReference which merges connection 
manager and mcf
             service = new ConnectorReference(connectionManager, 
managedConnectionFactory);
         } else if (service instanceof DataSource) {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ConnectorReference.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ConnectorReference.java?rev=1427463&r1=1427462&r2=1427463&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ConnectorReference.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ConnectorReference.java
 Tue Jan  1 16:59:16 2013
@@ -51,4 +51,8 @@ public class ConnectorReference extends 
             throw (javax.naming.NamingException) (new 
javax.naming.NamingException("Could not create ConnectionFactory from " + 
mngedConFactory.getClass()).initCause(re));
         }
     }
+
+    public ConnectionManager getConnectionManager() {
+        return conMngr;
+    }
 }
\ No newline at end of file


Reply via email to