Repository: tomee Updated Branches: refs/heads/master 095ce2560 -> d57a8cb0a
TOMEE-1992 ensure JMSContext is serializable Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d57a8cb0 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d57a8cb0 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d57a8cb0 Branch: refs/heads/master Commit: d57a8cb0adf841436aca8c09fcd053e00799bbe2 Parents: 095ce25 Author: rmannibucau <[email protected]> Authored: Tue Jan 3 09:43:00 2017 +0100 Committer: rmannibucau <[email protected]> Committed: Tue Jan 3 09:43:00 2017 +0100 ---------------------------------------------------------------------- .../activemq/jms2/cdi/JMS2CDIExtension.java | 4 +-- .../apache/openejb/activemq/JMS2AMQTest.java | 37 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/d57a8cb0/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java index 1b4c22a..a8aef08 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/cdi/JMS2CDIExtension.java @@ -149,7 +149,7 @@ public class JMS2CDIExtension implements Extension { public static class TransactionAutoContextDestruction extends AutoContextDestruction { } - public static class Key { + public static class Key implements Serializable { private volatile ConnectionFactory connectionFactoryInstance; private final String connectionFactory; private final String username; @@ -222,7 +222,7 @@ public class JMS2CDIExtension implements Extension { } } - public static class InternalJMSContext implements JMSContext { + public static class InternalJMSContext implements JMSContext, Serializable { private final Key key; private final RequestAutoContextDestruction requestStorage; private final TransactionAutoContextDestruction transactionStorage; http://git-wip-us.apache.org/repos/asf/tomee/blob/d57a8cb0/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java index f89526f..aa8f8d2 100644 --- a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java +++ b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQTest.java @@ -17,8 +17,10 @@ package org.apache.openejb.activemq; import org.apache.activemq.ActiveMQXAConnectionFactory; +import org.apache.commons.lang3.SerializationUtils; import org.apache.openejb.jee.MessageDrivenBean; import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Classes; import org.apache.openejb.testing.Configuration; import org.apache.openejb.testing.Module; import org.apache.openejb.testing.SimpleLog; @@ -33,6 +35,7 @@ import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.enterprise.context.RequestScoped; +import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.jms.ConnectionFactory; import javax.jms.JMSConnectionFactory; @@ -45,6 +48,14 @@ import javax.jms.MessageListener; import javax.jms.Queue; import javax.jms.TextMessage; import javax.jms.XAConnectionFactory; +import javax.transaction.HeuristicMixedException; +import javax.transaction.HeuristicRollbackException; +import javax.transaction.NotSupportedException; +import javax.transaction.RollbackException; +import javax.transaction.SystemException; +import javax.transaction.TransactionScoped; +import javax.transaction.UserTransaction; +import java.io.Serializable; import java.util.Properties; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -52,6 +63,7 @@ import java.util.concurrent.atomic.AtomicReference; import static java.lang.Thread.sleep; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -84,6 +96,7 @@ public class JMS2AMQTest { } @Module + @Classes(cdi = true, value = JustHereToCheckDeploymentIsOk.class) public MessageDrivenBean jar() { return new MessageDrivenBean(Listener.class); } @@ -110,12 +123,26 @@ public class JMS2AMQTest { @Inject // just there to ensure the injection works and we don't require @JMSConnectionFactory private JMSContext defaultContext; + @Inject + private JustHereToCheckDeploymentIsOk session; + + @Resource + private UserTransaction ut; + @Before public void resetLatch() { Listener.reset(); } @Test + public void serialize() throws SystemException, NotSupportedException, HeuristicRollbackException, HeuristicMixedException, RollbackException { + final JMSContext c = SerializationUtils.deserialize(SerializationUtils.serialize(Serializable.class.cast(context))); + ut.begin(); + session.ok(); + ut.commit(); + } + + @Test public void cdi() throws InterruptedException { final String text = TEXT + "3"; @@ -372,4 +399,14 @@ public class JMS2AMQTest { return ok; } } + + @TransactionScoped + public static class JustHereToCheckDeploymentIsOk implements Serializable { + @Inject + private JMSContext context; + + public void ok() { + assertNotNull(context); + } + } }
