diff --git a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractConnectionManager.java b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractConnectionManager.java
index 8cc0520..5ec67e1 100644
--- a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractConnectionManager.java
+++ b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractConnectionManager.java
@@ -22,43 +22,47 @@
 import javax.resource.spi.ConnectionRequestInfo;
 import javax.resource.spi.LazyAssociatableConnectionManager;
 import javax.resource.spi.ManagedConnectionFactory;
-import javax.transaction.SystemException;
 
 import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
-import org.apache.geronimo.transaction.manager.NamedXAResource;
-import org.apache.geronimo.transaction.manager.NamedXAResourceFactory;
 import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
 
 /**
  * @version $Rev$ $Date$
  */
 public abstract class AbstractConnectionManager implements ConnectionManagerContainer, ConnectionManager, LazyAssociatableConnectionManager, PoolingAttributes {
-    protected final Interceptors interceptors;
-    private final RecoverableTransactionManager transactionManager;
+    protected transient final Interceptors interceptors;
+    private transient final RecoverableTransactionManager transactionManager;
+    private transient final ManagedConnectionFactory managedConnectionFactory;
     private final String name;
 
     //default constructor to support externalizable subclasses
     public AbstractConnectionManager() {
         interceptors = null;
         transactionManager = null;
+        managedConnectionFactory = null;
         this.name = null;
     }
 
-    public AbstractConnectionManager(Interceptors interceptors, RecoverableTransactionManager transactionManager, String name) {
+    public AbstractConnectionManager(Interceptors interceptors, RecoverableTransactionManager transactionManager, ManagedConnectionFactory mcf, String name) {
         this.interceptors = interceptors;
         this.transactionManager = transactionManager;
+        this.managedConnectionFactory = mcf;
         this.name = name;
     }
 
-    public Object createConnectionFactory(ManagedConnectionFactory mcf) throws ResourceException {
-        return mcf.createConnectionFactory(this);
+    public Object createConnectionFactory() throws ResourceException {
+        return managedConnectionFactory.createConnectionFactory(this);
     }
 
     protected ConnectionManager getConnectionManager() {
         return this;
     }
 
-    public void doRecovery(ManagedConnectionFactory managedConnectionFactory) {
+    public ManagedConnectionFactory getManagedConnectionFactory() {
+        return managedConnectionFactory;
+    }
+
+    public void doRecovery() {
         if (!getIsRecoverable()) {
             return;
         }
@@ -186,12 +190,16 @@
     }
 
     public void doStop() throws Exception {
-        transactionManager.unregisterNamedXAResourceFactory(name);
+        if (transactionManager != null) {
+            transactionManager.unregisterNamedXAResourceFactory(name);
+        }
         interceptors.getStack().destroy();
     }
 
     public void doFail() {
-        transactionManager.unregisterNamedXAResourceFactory(name);
+        if (transactionManager != null) {
+            transactionManager.unregisterNamedXAResourceFactory(name);
+        }
         interceptors.getStack().destroy();
     }
 }
diff --git a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/ConnectionManagerContainer.java b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/ConnectionManagerContainer.java
index cedbd16..f7b4f2f 100644
--- a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/ConnectionManagerContainer.java
+++ b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/ConnectionManagerContainer.java
@@ -27,8 +27,8 @@
  */
 public interface ConnectionManagerContainer {
 
-    Object createConnectionFactory(ManagedConnectionFactory mcf) throws ResourceException;
+    Object createConnectionFactory() throws ResourceException;
 
-    void doRecovery(ManagedConnectionFactory managedConnectionFactory);
+    void doRecovery();
 
 }
diff --git a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/GenericConnectionManager.java b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/GenericConnectionManager.java
index 875487e..fddcde0 100644
--- a/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/GenericConnectionManager.java
+++ b/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/GenericConnectionManager.java
@@ -17,11 +17,15 @@
 
 package org.apache.geronimo.connector.outbound;
 
+import javax.resource.spi.ManagedConnectionFactory;
 import javax.transaction.TransactionManager;
 
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoTransactions;
 import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PartitionedPool;
 import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
 import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.XATransactions;
 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
 import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
 import org.slf4j.Logger;
@@ -48,6 +52,7 @@
      * @param subjectSource If not null, use container managed security, getting the Subject from the SubjectSource
      * @param connectionTracker tracks connections between calls as needed
      * @param transactionManager transaction manager
+     * @param mcf
      * @param name name
      * @param classLoader classloader this component is running in.
      */
@@ -56,9 +61,10 @@
                                     SubjectSource subjectSource,
                                     ConnectionTracker connectionTracker,
                                     RecoverableTransactionManager transactionManager,
+                                    ManagedConnectionFactory mcf,
                                     String name,
                                     ClassLoader classLoader) {
-        super(new InterceptorsImpl(transactionSupport, pooling, subjectSource, name, connectionTracker, transactionManager, classLoader), transactionManager, name);
+        super(new InterceptorsImpl(transactionSupport, pooling, subjectSource, name, connectionTracker, transactionManager, mcf, classLoader), transactionManager, mcf, name);
     }
 
     private static class InterceptorsImpl implements AbstractConnectionManager.Interceptors {
@@ -86,12 +92,36 @@
                                 String name,
                                 ConnectionTracker connectionTracker,
                                 TransactionManager transactionManager,
-                                ClassLoader classLoader) {
+                                ManagedConnectionFactory mcf, ClassLoader classLoader) {
             //check for consistency between attributes
             if (subjectSource == null && pooling instanceof PartitionedPool && ((PartitionedPool) pooling).isPartitionBySubject()) {
                 throw new IllegalStateException("To use Subject in pooling, you need a SecurityDomain");
             }
 
+            if (mcf == null) {
+                throw new NullPointerException("No ManagedConnectionFactory supplied for " + name);
+            }
+            if (mcf instanceof javax.resource.spi.TransactionSupport) {
+                javax.resource.spi.TransactionSupport txSupport = (javax.resource.spi.TransactionSupport)mcf;
+                javax.resource.spi.TransactionSupport.TransactionSupportLevel txSupportLevel = txSupport.getTransactionSupport();
+                log.info("Runtime TransactionSupport level: " + txSupportLevel);
+                if (txSupportLevel != null) {
+                    if (txSupportLevel == javax.resource.spi.TransactionSupport.TransactionSupportLevel.NoTransaction) {
+                        transactionSupport = NoTransactions.INSTANCE;
+                    } else if (txSupportLevel == javax.resource.spi.TransactionSupport.TransactionSupportLevel.LocalTransaction) {
+                        if (transactionSupport != NoTransactions.INSTANCE) {
+                            transactionSupport = LocalTransactions.INSTANCE;
+                        }
+                    } else {
+                        if (transactionSupport != NoTransactions.INSTANCE && transactionSupport != LocalTransactions.INSTANCE) {
+                            transactionSupport = new XATransactions(true, false);
+                        }
+                    }
+                }
+            } else {
+                log.info("No runtime TransactionSupport");
+            }
+
             //Set up the interceptor stack
             MCFConnectionInterceptor tail = new MCFConnectionInterceptor();
             ConnectionInterceptor stack = tail;
diff --git a/geronimo-connector/src/test/java/org/apache/geronimo/connector/outbound/ConnectionManagerTestUtils.java b/geronimo-connector/src/test/java/org/apache/geronimo/connector/outbound/ConnectionManagerTestUtils.java
index 158803b..cff5c6f 100644
--- a/geronimo-connector/src/test/java/org/apache/geronimo/connector/outbound/ConnectionManagerTestUtils.java
+++ b/geronimo-connector/src/test/java/org/apache/geronimo/connector/outbound/ConnectionManagerTestUtils.java
@@ -113,9 +113,10 @@
                 poolingSupport,
                 subjectSource, connectionTrackingCoordinator,
                 this.transactionManager,
+                mockManagedConnectionFactory,
                 name,
                 classLoader);
-        connectionFactory = (MockConnectionFactory) connectionManagerDeployment.createConnectionFactory(mockManagedConnectionFactory);
+        connectionFactory = (MockConnectionFactory) connectionManagerDeployment.createConnectionFactory();
         connectorInstanceContext = new ConnectorInstanceContextImpl(unshareableResources, applicationManagedSecurityResources);
         defaultComponentInterceptor = new DefaultComponentInterceptor(this, connectionTrackingCoordinator);
     }
