You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2017/08/03 22:15:27 UTC

[1/5] tomee git commit: Forward porting 4e69b3fe8d640445cf90a9a94d8c132e52535939 TOMEE-2082 attempting to allow classes without no-arg constructors to be sub-classes

Repository: tomee
Updated Branches:
  refs/heads/master 6f9b67b39 -> 9cd843883


Forward porting 4e69b3fe8d640445cf90a9a94d8c132e52535939 TOMEE-2082 attempting to allow classes without no-arg constructors to be sub-classes


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bd79546d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bd79546d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bd79546d

Branch: refs/heads/master
Commit: bd79546df6372f308a553eb0006ec7e1e854fe71
Parents: b2973d7
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Tue Aug 1 23:47:58 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Tue Aug 1 23:47:58 2017 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/dyni/DynamicSubclass.java    |  2 +-
 .../openejb/resource/AutoConnectionTracker.java     | 16 ++++------------
 .../openejb/util/proxy/LocalBeanProxyFactory.java   |  2 +-
 .../apache/openejb/config/ConnectorProxyTest.java   | 10 ++++++++--
 4 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/bd79546d/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
index 5c27658..123c0ff 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
@@ -134,7 +134,7 @@ public class DynamicSubclass implements Opcodes {
         for (final Map.Entry<String, List<Method>> entry : methodMap.entrySet()) {
 
             for (final Method method : entry.getValue()) {
-                if (Modifier.isAbstract(method.getModifiers())) {
+                if (Modifier.isPublic(method.getModifiers())) {
                     final MethodVisitor visitor = LocalBeanProxyFactory.visit(cw, method, proxyClassFileName, "this$handler");
                     visitors.put(method.getName() + Type.getMethodDescriptor(method), visitor);
                 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/bd79546d/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
index 0a26bad..7ec8ecb 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
@@ -25,6 +25,7 @@ import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrack
 import org.apache.openejb.dyni.DynamicSubclass;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.DissociatableManagedConnection;
@@ -126,18 +127,9 @@ public class AutoConnectionTracker implements ConnectionTracker {
             loader = ClassLoader.getSystemClassLoader();
         }
         if (!Proxy.isProxyClass(handle.getClass())) {
-            try {
-                handle.getClass().getConstructor(); // if not let's the user reuse the impl-ed interfaces
-                try {
-                    final Object proxy = getProxy(handle.getClass(), loader).newInstance();
-                    DynamicSubclass.setHandler(proxy, invocationHandler);
-                    return proxy;
-                } catch (final InstantiationException | IllegalAccessException e) {
-                    throw new IllegalStateException(e);
-                }
-            } catch (final NoSuchMethodException e1) {
-                // no-op
-            }
+            final Object proxy = LocalBeanProxyFactory.Unsafe.allocateInstance(getProxy(handle.getClass(), loader));
+            DynamicSubclass.setHandler(proxy, invocationHandler);
+            return proxy;
         }
 
         return Proxy.newProxyInstance(loader, getAPi(handle.getClass()), invocationHandler);

http://git-wip-us.apache.org/repos/asf/tomee/blob/bd79546d/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
index cd9cb7e..9a56db7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
@@ -788,7 +788,7 @@ public class LocalBeanProxyFactory implements Opcodes {
             });
         }
 
-        private static Object allocateInstance(final Class clazz) {
+        public static Object allocateInstance(final Class clazz) {
             try {
                 return allocateInstance.invoke(unsafe, clazz);
             } catch (final IllegalAccessException e) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/bd79546d/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyTest.java
index 5db51c6..9092507 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyTest.java
@@ -203,8 +203,14 @@ public class ConnectorProxyTest {
     }
 
     public static class MyCon implements MyConAPI {
+        private final String arg;
+
+        public MyCon(String arg) {
+            this.arg = arg;
+        }
+
         public String specific() {
-            return "yes";
+            return arg;
         }
 
         @Override
@@ -236,7 +242,7 @@ public class ConnectorProxyTest {
     public static class MyMC implements ManagedConnection {
         @Override
         public Object getConnection(final Subject subject, final ConnectionRequestInfo cxRequestInfo) throws ResourceException {
-            return new MyCon();
+            return new MyCon("yes");
         }
 
         @Override


[5/5] tomee git commit: Merge remote-tracking branch 'apache/master' into ra-proxy-work

Posted by jg...@apache.org.
Merge remote-tracking branch 'apache/master' into ra-proxy-work


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/9cd84388
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/9cd84388
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/9cd84388

Branch: refs/heads/master
Commit: 9cd843883ab8fbb8c5afe64dc9f5c038bec2c28b
Parents: fc62c3a 6f9b67b
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Thu Aug 3 23:14:49 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Thu Aug 3 23:14:49 2017 +0100

----------------------------------------------------------------------
 README.md                                       |   1 -
 .../openejb/assembler/classic/Assembler.java    |  78 +++++++-
 .../openejb/assembler/classic/ResourceInfo.java |   2 +
 .../apache/openejb/core/mdb/MdbContainer.java   |  21 ++-
 .../ApplicationResourceLifecycleTest.java       |  84 +++++++++
 .../core/mdb/ResourceAdapterControlTest.java    |  16 +-
 .../mdb/ResourceAdapterDeliveryActiveTest.java  | 184 +++++++++++++++++++
 .../src/test/resources/app-resources.xml        |  21 +++
 pom.xml                                         |   2 +-
 9 files changed, 396 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[4/5] tomee git commit: Fix failing tests

Posted by jg...@apache.org.
Fix failing tests


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/fc62c3a9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/fc62c3a9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/fc62c3a9

Branch: refs/heads/master
Commit: fc62c3a9a79623ad318afde53c21adad9d5bf2d3
Parents: efbdc87
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Wed Aug 2 13:43:39 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Aug 2 13:43:39 2017 +0100

----------------------------------------------------------------------
 .../activemq/ActiveMQResourceAdapter.java       | 44 ++++++++++++++++----
 .../ConnectorProxyNoNoArgConstructorTest.java   |  2 +-
 2 files changed, 36 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/fc62c3a9/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
index e5f201e..1437a95 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
@@ -47,6 +47,7 @@ import javax.naming.NamingException;
 import javax.resource.ResourceException;
 import javax.resource.spi.BootstrapContext;
 import javax.resource.spi.ResourceAdapterInternalException;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
@@ -234,18 +235,27 @@ public class ActiveMQResourceAdapter extends org.apache.activemq.ra.ActiveMQReso
                         Connection connection = connectionFactory.createConnection();
                         if (Proxy.isProxyClass(connection.getClass())) { // not great, we should find a better want without bypassing ra layer
                             final InvocationHandler invocationHandler = Proxy.getInvocationHandler(connection);
-                            if (AutoConnectionTracker.ConnectionInvocationHandler.class.isInstance(invocationHandler)) {
-                                final Object handle = Reflections.get(invocationHandler, "handle");
-                                if (TomEEManagedConnectionProxy.class.isInstance(handle)) {
-                                    final ActiveMQManagedConnection c = ActiveMQManagedConnection.class.cast(Reflections.get(handle, "connection"));
-                                    final ActiveMQConnection physicalConnection = ActiveMQConnection.class.cast(Reflections.get(c, "physicalConnection"));
-                                    final RedeliveryPolicy redeliveryPolicy = activationSpec.redeliveryPolicy();
-                                    if (redeliveryPolicy != null) {
-                                        physicalConnection.setRedeliveryPolicy(redeliveryPolicy);
-                                    }
+                            final ActiveMQConnection physicalConnection = getActiveMQConnection(activationSpec, invocationHandler);
+                            if (physicalConnection != null) {
+                                return physicalConnection;
+                            }
+                        }
+
+                        // see if this is a dynamic subclass as opposed to a regular proxy
+                        try {
+                            final Field handler = connection.getClass().getDeclaredField("this$handler");
+                            handler.setAccessible(true);
+                            final Object o = handler.get(connection);
+
+                            if (InvocationHandler.class.isInstance(o)) {
+                                final InvocationHandler invocationHandler = InvocationHandler.class.cast(o);
+                                final ActiveMQConnection physicalConnection = getActiveMQConnection(activationSpec, invocationHandler);
+                                if (physicalConnection != null) {
                                     return physicalConnection;
                                 }
                             }
+                        } catch (NoSuchFieldException | IllegalAccessException e) {
+                            // ignore, this is not a dynamic subclass
                         }
 
                         /*
@@ -266,6 +276,22 @@ public class ActiveMQResourceAdapter extends org.apache.activemq.ra.ActiveMQReso
         return super.makeConnection(activationSpec);
     }
 
+    private ActiveMQConnection getActiveMQConnection(MessageActivationSpec activationSpec, InvocationHandler invocationHandler) {
+        if (AutoConnectionTracker.ConnectionInvocationHandler.class.isInstance(invocationHandler)) {
+            final Object handle = Reflections.get(invocationHandler, "handle");
+            if (TomEEManagedConnectionProxy.class.isInstance(handle)) {
+                final ActiveMQManagedConnection c = ActiveMQManagedConnection.class.cast(Reflections.get(handle, "connection"));
+                final ActiveMQConnection physicalConnection = ActiveMQConnection.class.cast(Reflections.get(c, "physicalConnection"));
+                final RedeliveryPolicy redeliveryPolicy = activationSpec.redeliveryPolicy();
+                if (redeliveryPolicy != null) {
+                    physicalConnection.setRedeliveryPolicy(redeliveryPolicy);
+                }
+                return physicalConnection;
+            }
+        }
+        return null;
+    }
+
     @Override
     protected ActiveMQConnectionFactory createConnectionFactory(final ActiveMQConnectionRequestInfo connectionRequestInfo, final MessageActivationSpec activationSpec) {
         if (TomEEMessageActivationSpec.class.isInstance(activationSpec)) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/fc62c3a9/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyNoNoArgConstructorTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyNoNoArgConstructorTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyNoNoArgConstructorTest.java
index c0d2e13..b4bd1b7 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyNoNoArgConstructorTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/ConnectorProxyNoNoArgConstructorTest.java
@@ -93,7 +93,7 @@ public class ConnectorProxyNoNoArgConstructorTest {
 
         final Connection connection = jndi.getConnection();
         assertTrue(MyConAPI.class.isInstance(connection));
-        assertFalse(MyCon.class.isInstance(connection));
+        assertTrue(MyCon.class.isInstance(connection));
     }
 
     public static class MyRa implements javax.resource.spi.ResourceAdapter {


[3/5] tomee git commit: Build fixes

Posted by jg...@apache.org.
Build fixes


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/efbdc87f
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/efbdc87f
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/efbdc87f

Branch: refs/heads/master
Commit: efbdc87fa6e0de223c90aec5fbc3ce749b05cb9e
Parents: dec5396
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Wed Aug 2 12:26:40 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Aug 2 12:26:40 2017 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/dyni/DynamicSubclass.java     | 2 +-
 .../java/org/apache/openejb/resource/AutoConnectionTracker.java    | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/efbdc87f/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
index 44e1256..7ce6934 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
@@ -84,7 +84,7 @@ public class DynamicSubclass implements Opcodes {
                 // no-op
             }
 
-            return LocalBeanProxyFactory.Unsafe.defineClass(abstractClass, proxyName, generateBytes(abstractClass));
+            return LocalBeanProxyFactory.Unsafe.defineClass(cl, abstractClass, proxyName, generateBytes(abstractClass, proxyNonAbstractMethods));
 
         } catch (final Exception e) {
             throw new InternalError(DynamicSubclass.class.getSimpleName() + ".createSubclass: " + Debug.printStackTrace(e));

http://git-wip-us.apache.org/repos/asf/tomee/blob/efbdc87f/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
index 125e37a..e896aa1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
@@ -23,6 +23,8 @@ import org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor;
 import org.apache.geronimo.connector.outbound.ManagedConnectionInfo;
 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
 import org.apache.openejb.dyni.DynamicSubclass;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 
 import javax.resource.ResourceException;


[2/5] tomee git commit: Don't break the dynamic abstract ejb concept. Remove unnecessary imports

Posted by jg...@apache.org.
Don't break the dynamic abstract ejb concept. Remove unnecessary imports


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/dec53967
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/dec53967
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/dec53967

Branch: refs/heads/master
Commit: dec53967a462ad315f0211ba5d7dfa7954d1a5bf
Parents: bd79546
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Thu Jun 29 16:11:52 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Aug 2 10:50:58 2017 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/dyni/DynamicSubclass.java    | 16 +++++++++++-----
 .../openejb/resource/AutoConnectionTracker.java     |  4 +---
 2 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/dec53967/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
index 123c0ff..44e1256 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
@@ -61,6 +61,10 @@ public class DynamicSubclass implements Opcodes {
     }
 
     public static Class createSubclass(final Class<?> abstractClass, final ClassLoader cl) {
+        return createSubclass(abstractClass, cl, false);
+    }
+
+    public static Class createSubclass(final Class<?> abstractClass, final ClassLoader cl, boolean proxyNonAbstractMethods) {
         final String proxyName = getSubclassName(abstractClass);
 
         try {
@@ -80,7 +84,7 @@ public class DynamicSubclass implements Opcodes {
                 // no-op
             }
 
-            return LocalBeanProxyFactory.Unsafe.defineClass(cl, abstractClass, proxyName, generateBytes(abstractClass));
+            return LocalBeanProxyFactory.Unsafe.defineClass(abstractClass, proxyName, generateBytes(abstractClass));
 
         } catch (final Exception e) {
             throw new InternalError(DynamicSubclass.class.getSimpleName() + ".createSubclass: " + Debug.printStackTrace(e));
@@ -96,14 +100,16 @@ public class DynamicSubclass implements Opcodes {
                 thisHandler.setAccessible(true);
             }
             thisHandler.set(instance, handler);
-        } catch (final NoSuchFieldException | IllegalAccessException e) {
+        } catch (final NoSuchFieldException e) {
+            throw new IllegalArgumentException(e);
+        } catch (final IllegalAccessException e) {
             throw new IllegalArgumentException(e);
         }
     }
 
-    private static byte[] generateBytes(final Class<?> classToProxy) throws ProxyGenerationException {
+    private static byte[] generateBytes(final Class<?> classToProxy, final boolean proxyNonAbstractMethods) throws ProxyGenerationException {
 
-        final Map<String, MethodVisitor> visitors = new HashMap<>();
+        final Map<String, MethodVisitor> visitors = new HashMap<String, MethodVisitor>();
 
         final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
 
@@ -134,7 +140,7 @@ public class DynamicSubclass implements Opcodes {
         for (final Map.Entry<String, List<Method>> entry : methodMap.entrySet()) {
 
             for (final Method method : entry.getValue()) {
-                if (Modifier.isPublic(method.getModifiers())) {
+                if (Modifier.isAbstract(method.getModifiers()) || (proxyNonAbstractMethods && Modifier.isPublic(method.getModifiers()))) {
                     final MethodVisitor visitor = LocalBeanProxyFactory.visit(cw, method, proxyClassFileName, "this$handler");
                     visitors.put(method.getName() + Type.getMethodDescriptor(method), visitor);
                 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/dec53967/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
index 7ec8ecb..125e37a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
@@ -23,8 +23,6 @@ import org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor;
 import org.apache.geronimo.connector.outbound.ManagedConnectionInfo;
 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
 import org.apache.openejb.dyni.DynamicSubclass;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 
 import javax.resource.ResourceException;
@@ -157,7 +155,7 @@ public class AutoConnectionTracker implements ConnectionTracker {
             synchronized (this) {
                 found = proxies.get(aClass);
                 if (found == null) {
-                    proxies.put(aClass, DynamicSubclass.createSubclass(aClass, loader));
+                    proxies.put(aClass, DynamicSubclass.createSubclass(aClass, loader, true));
                     found = proxies.get(aClass);
                 }
             }