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 2018/09/17 14:51:02 UTC

tomee git commit: TOMEE-2237 ensure MessageDrivenContext is injected when using MDB pooling

Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x f59e9bb92 -> 702264588


TOMEE-2237 ensure MessageDrivenContext is injected when using MDB pooling


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

Branch: refs/heads/tomee-1.7.x
Commit: 702264588cd65431390f41d6295cf86eb3e64c63
Parents: f59e9bb
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Mon Sep 17 15:50:29 2018 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Mon Sep 17 15:50:29 2018 +0100

----------------------------------------------------------------------
 .../apache/openejb/core/mdb/MdbInstanceManager.java   | 14 ++++++++++++++
 .../apache/openejb/core/mdb/MdbPoolContainerTest.java | 14 ++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/70226458/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java b/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java
index f7525b6..2c8ace9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java
@@ -28,6 +28,7 @@ import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.core.interceptor.InterceptorStack;
+import org.apache.openejb.core.timer.TimerServiceWrapper;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.monitoring.*;
 import org.apache.openejb.spi.SecurityService;
@@ -41,6 +42,7 @@ import org.apache.xbean.recipe.ObjectRecipe;
 import org.apache.xbean.recipe.Option;
 
 import javax.ejb.ConcurrentAccessTimeoutException;
+import javax.ejb.EJBContext;
 import javax.ejb.SessionBean;
 import javax.management.Attribute;
 import javax.management.AttributeList;
@@ -59,6 +61,8 @@ import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
+import javax.naming.Context;
+import javax.naming.NamingException;
 import javax.resource.ResourceException;
 import javax.resource.spi.ActivationSpec;
 import javax.resource.spi.ResourceAdapter;
@@ -194,6 +198,16 @@ public class MdbInstanceManager {
                 data.flush();
             }
         });
+
+        try {
+            final Context context = beanContext.getJndiEnc();
+            context.bind("comp/EJBContext", mdbContext);
+            context.bind("comp/TimerService", new TimerServiceWrapper());
+        } catch (final NamingException e) {
+            throw new OpenEJBException("Failed to bind EJBContext/TimerService", e);
+        }
+
+        beanContext.set(EJBContext.class, mdbContext);
         data.setBaseContext(mdbContext);
         beanContext.setContainerData(data);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/70226458/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbPoolContainerTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbPoolContainerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbPoolContainerTest.java
index 0548f20..3ade78b4 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbPoolContainerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbPoolContainerTest.java
@@ -17,7 +17,6 @@
 package org.apache.openejb.core.mdb;
 
 import org.apache.activemq.ActiveMQXAConnectionFactory;
-import org.apache.openejb.activemq.AMQXASupportTest;
 import org.apache.openejb.jee.MessageDrivenBean;
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.testing.Configuration;
@@ -30,6 +29,7 @@ import org.junit.runner.RunWith;
 import javax.annotation.Resource;
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.MessageDriven;
+import javax.ejb.MessageDrivenContext;
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
@@ -81,7 +81,7 @@ public class MdbPoolContainerTest {
 
     @Module
     public MessageDrivenBean jar() {
-        return new MessageDrivenBean(AMQXASupportTest.Listener.class);
+        return new MessageDrivenBean(Listener.class);
     }
 
     @Resource(name = "target")
@@ -95,7 +95,7 @@ public class MdbPoolContainerTest {
 
     @Before
     public void resetLatch() {
-        AMQXASupportTest.Listener.reset();
+        Listener.reset();
     }
 
     @Test
@@ -108,7 +108,7 @@ public class MdbPoolContainerTest {
             final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
             final MessageProducer producer = session.createProducer(destination);
             producer.send(session.createTextMessage(TEXT));
-            assertTrue(AMQXASupportTest.Listener.sync());
+            assertTrue(Listener.sync());
         } finally {
             connection.close();
         }
@@ -119,6 +119,10 @@ public class MdbPoolContainerTest {
             @ActivationConfigProperty(propertyName = "destination", propertyValue = "target")
     })
     public static class Listener implements MessageListener {
+
+        @Resource
+        private MessageDrivenContext ctx;
+
         public static CountDownLatch latch;
         public static boolean ok = false;
 
@@ -133,6 +137,8 @@ public class MdbPoolContainerTest {
             } finally {
                 latch.countDown();
             }
+
+            assertNotNull(ctx);
         }
 
         public static void reset() {