You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2014/12/16 18:19:04 UTC

[1/5] activemq-6 git commit: Only Set TM on Bridge in QoS modes that require it

Repository: activemq-6
Updated Branches:
  refs/heads/master 64cc435ea -> b1d6c0b44


Only Set TM on Bridge in QoS modes that require it

The bridge currently tries to assign a TM even when the quality of
service level is set to Duplicates OK.  This QoS does not use or require
a TM.  This patch stops the bridge from attempting to assign a TM for
this QoS and also checks that a TM is set of the other QoS.  If TM is
not set for a QoS that requires one, a error is logged and RunTime
exception thrown.


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

Branch: refs/heads/master
Commit: f28c9be8afd2b86288389c51b8e5184fea5d3cb9
Parents: 739c0f3
Author: Martyn Taylor <mt...@redhat.com>
Authored: Mon Dec 15 16:27:27 2014 +0000
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Tue Dec 16 16:33:58 2014 +0000

----------------------------------------------------------------------
 .../jms/bridge/ActiveMQJMSBridgeLogger.java     |  4 ++
 .../activemq/jms/bridge/impl/JMSBridgeImpl.java | 50 ++++++++------
 .../jms/bridge/impl/JMSBridgeImplTest.java      | 72 ++++++++++++++++++++
 3 files changed, 107 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/f28c9be8/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/ActiveMQJMSBridgeLogger.java
----------------------------------------------------------------------
diff --git a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/ActiveMQJMSBridgeLogger.java b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/ActiveMQJMSBridgeLogger.java
index 3eeb9e6..41b6167 100644
--- a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/ActiveMQJMSBridgeLogger.java
+++ b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/ActiveMQJMSBridgeLogger.java
@@ -101,4 +101,8 @@ public interface ActiveMQJMSBridgeLogger extends BasicLogger
    @LogMessage(level = Logger.Level.ERROR)
    @Message(id = 344001, value = "Failed to start source connection" , format = Message.Format.MESSAGE_FORMAT)
    void jmsBridgeSrcConnectError(@Cause Exception e);
+
+   @LogMessage(level = Logger.Level.ERROR)
+   @Message(id = 344002, value = "Failed to start JMS Bridge.  QoS Mode: {0} requires a Transaction Manager, none found" , format = Message.Format.MESSAGE_FORMAT)
+   void jmsBridgeTransactionManagerMissing(QualityOfServiceMode qosMode);
 }

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/f28c9be8/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
----------------------------------------------------------------------
diff --git a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
index cefc928..0301e84 100644
--- a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
+++ b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
@@ -66,7 +66,6 @@ import org.apache.activemq.jms.client.ActiveMQMessage;
 import org.apache.activemq.jms.server.ActiveMQJMSServerBundle;
 import org.apache.activemq.service.extensions.ServiceUtils;
 import org.apache.activemq.service.extensions.xa.recovery.ActiveMQRegistry;
-import org.apache.activemq.service.extensions.xa.recovery.ActiveMQRegistryImpl;
 import org.apache.activemq.service.extensions.xa.recovery.XARecoveryConfig;
 import org.apache.activemq.utils.ClassloadingUtil;
 import org.apache.activemq.utils.DefaultSensitiveStringCodec;
@@ -402,29 +401,46 @@ public final class JMSBridgeImpl implements JMSBridge
 
       checkParams();
 
-      if (tm == null)
-      {
-         tm = ServiceUtils.getTransactionManager();
-      }
-
       // There may already be a JTA transaction associated to the thread
 
       boolean ok;
 
-      Transaction toResume = null;
-      try
+      // Check to see if the QoSMode requires a TM
+      if (qualityOfServiceMode.equals(QualityOfServiceMode.AT_MOST_ONCE) ||
+         qualityOfServiceMode.equals(QualityOfServiceMode.ONCE_AND_ONLY_ONCE))
       {
-         toResume = tm.suspend();
+         if (tm == null)
+         {
+            tm = ServiceUtils.getTransactionManager();
+         }
 
-         ok = setupJMSObjects();
-      }
-      finally
-      {
-         if (toResume != null)
+         if (tm == null)
          {
-            tm.resume(toResume);
+            ActiveMQJMSBridgeLogger.LOGGER.jmsBridgeTransactionManagerMissing(qualityOfServiceMode);
+            throw new RuntimeException();
+         }
+
+         // There may already be a JTA transaction associated to the thread
+
+         Transaction toResume = null;
+         try
+         {
+            toResume = tm.suspend();
+
+            ok = setupJMSObjects();
+         }
+         finally
+         {
+            if (toResume != null)
+            {
+               tm.resume(toResume);
+            }
          }
       }
+      else
+      {
+         ok = setupJMSObjects();
+      }
 
       if (ok)
       {
@@ -2241,10 +2257,6 @@ public final class JMSBridgeImpl implements JMSBridge
                {
                   registry = sl.iterator().next();
                }
-               else
-               {
-                  registry = ActiveMQRegistryImpl.getInstance();
-               }
             }
             catch (Throwable e)
             {

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/f28c9be8/tests/timing-tests/src/test/java/org/apache/activemq/tests/timing/jms/bridge/impl/JMSBridgeImplTest.java
----------------------------------------------------------------------
diff --git a/tests/timing-tests/src/test/java/org/apache/activemq/tests/timing/jms/bridge/impl/JMSBridgeImplTest.java b/tests/timing-tests/src/test/java/org/apache/activemq/tests/timing/jms/bridge/impl/JMSBridgeImplTest.java
index 1ec6dbc..c28251a 100644
--- a/tests/timing-tests/src/test/java/org/apache/activemq/tests/timing/jms/bridge/impl/JMSBridgeImplTest.java
+++ b/tests/timing-tests/src/test/java/org/apache/activemq/tests/timing/jms/bridge/impl/JMSBridgeImplTest.java
@@ -36,6 +36,7 @@ import javax.transaction.SystemException;
 import javax.transaction.Transaction;
 import javax.transaction.TransactionManager;
 import java.lang.management.ManagementFactory;
+import java.lang.reflect.Field;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -65,7 +66,9 @@ import org.apache.activemq.tests.util.UnitTestCase;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 
 /**
  * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>
@@ -84,6 +87,9 @@ public class JMSBridgeImplTest extends UnitTestCase
 
    private JMSServerManager jmsServer;
 
+   @Rule
+   public ExpectedException thrown = ExpectedException.none();
+
    // Static --------------------------------------------------------
 
    protected static TransactionManager newTransactionManager()
@@ -633,6 +639,72 @@ public class JMSBridgeImplTest extends UnitTestCase
       super.tearDown();
    }
 
+   @Test
+   public void testTransactionManagerNotSetForDuplicatesOK() throws Exception
+   {
+
+      ConnectionFactoryFactory sourceCFF = JMSBridgeImplTest.newConnectionFactoryFactory(JMSBridgeImplTest.createConnectionFactory());
+      ConnectionFactoryFactory targetCFF = JMSBridgeImplTest.newConnectionFactoryFactory(JMSBridgeImplTest.createConnectionFactory());
+      DestinationFactory sourceDF = JMSBridgeImplTest.newDestinationFactory(ActiveMQJMSClient.createQueue(JMSBridgeImplTest.SOURCE));
+      DestinationFactory targetDF = JMSBridgeImplTest.newDestinationFactory(ActiveMQJMSClient.createQueue(JMSBridgeImplTest.TARGET));
+
+      JMSBridgeImpl bridge = new JMSBridgeImpl();
+      Assert.assertNotNull(bridge);
+
+      bridge.setSourceConnectionFactoryFactory(sourceCFF);
+      bridge.setSourceDestinationFactory(sourceDF);
+      bridge.setTargetConnectionFactoryFactory(targetCFF);
+      bridge.setTargetDestinationFactory(targetDF);
+      bridge.setFailureRetryInterval(10);
+      bridge.setMaxRetries(1);
+      bridge.setMaxBatchTime(-1);
+      bridge.setMaxBatchSize(10);
+      bridge.setQualityOfServiceMode(QualityOfServiceMode.DUPLICATES_OK);
+
+      Assert.assertFalse(bridge.isStarted());
+      bridge.start();
+
+      Field field = JMSBridgeImpl.class.getDeclaredField("tm");
+      field.setAccessible(true);
+      assertNull(field.get(bridge));
+
+      bridge.stop();
+      Assert.assertFalse(bridge.isStarted());
+   }
+
+   @Test
+   public void testThrowErrorWhenTMNotSetForOnceOnly() throws Exception
+   {
+      thrown.expect(RuntimeException.class);
+
+      ConnectionFactoryFactory sourceCFF = JMSBridgeImplTest.newConnectionFactoryFactory(JMSBridgeImplTest.createConnectionFactory());
+      ConnectionFactoryFactory targetCFF = JMSBridgeImplTest.newConnectionFactoryFactory(JMSBridgeImplTest.createConnectionFactory());
+      DestinationFactory sourceDF = JMSBridgeImplTest.newDestinationFactory(ActiveMQJMSClient.createQueue(JMSBridgeImplTest.SOURCE));
+      DestinationFactory targetDF = JMSBridgeImplTest.newDestinationFactory(ActiveMQJMSClient.createQueue(JMSBridgeImplTest.TARGET));
+
+      JMSBridgeImpl bridge = new JMSBridgeImpl();
+      Assert.assertNotNull(bridge);
+
+      bridge.setSourceConnectionFactoryFactory(sourceCFF);
+      bridge.setSourceDestinationFactory(sourceDF);
+      bridge.setTargetConnectionFactoryFactory(targetCFF);
+      bridge.setTargetDestinationFactory(targetDF);
+      bridge.setFailureRetryInterval(10);
+      bridge.setMaxRetries(1);
+      bridge.setMaxBatchTime(-1);
+      bridge.setMaxBatchSize(10);
+      bridge.setQualityOfServiceMode(QualityOfServiceMode.ONCE_AND_ONLY_ONCE);
+
+      Assert.assertFalse(bridge.isStarted());
+      bridge.start();
+
+      Field field = JMSBridgeImpl.class.getDeclaredField("tm");
+      field.setAccessible(true);
+      assertNotNull(field.get(bridge));
+
+      bridge.stop();
+      Assert.assertFalse(bridge.isStarted());
+   }
    // Private -------------------------------------------------------
 
    // Inner classes -------------------------------------------------


[2/5] activemq-6 git commit: Allow tests to set TM in TMLocatorImpl

Posted by cl...@apache.org.
Allow tests to set TM in TMLocatorImpl

Some tests require a proper TM to be returned by the TMLocator
implementation whilst others require a DummyTM to be returned.  This
patch makes allows TM returned by the locator class to be changed by the
test.


Project: http://git-wip-us.apache.org/repos/asf/activemq-6/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-6/commit/739c0f36
Tree: http://git-wip-us.apache.org/repos/asf/activemq-6/tree/739c0f36
Diff: http://git-wip-us.apache.org/repos/asf/activemq-6/diff/739c0f36

Branch: refs/heads/master
Commit: 739c0f368b5d9ad79ee3d8f68d55134cfc5c3f69
Parents: 39c6101
Author: Martyn Taylor <mt...@redhat.com>
Authored: Mon Dec 15 13:50:45 2014 +0000
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Tue Dec 16 16:33:58 2014 +0000

----------------------------------------------------------------------
 .../integration/jms/bridge/TransactionManagerLocatorImpl.java    | 4 +++-
 .../org/apache/activemq/tests/integration/ra/JMSContextTest.java | 2 ++
 .../activemq/tests/integration/ra/OutgoingConnectionTest.java    | 1 -
 3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/739c0f36/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/jms/bridge/TransactionManagerLocatorImpl.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/jms/bridge/TransactionManagerLocatorImpl.java b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/jms/bridge/TransactionManagerLocatorImpl.java
index 5ab404f..7d6ff74 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/jms/bridge/TransactionManagerLocatorImpl.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/jms/bridge/TransactionManagerLocatorImpl.java
@@ -28,9 +28,11 @@ import org.apache.activemq.service.extensions.transactions.TransactionManagerLoc
 
 public class TransactionManagerLocatorImpl implements TransactionManagerLocator
 {
+   public static TransactionManager tm = new TransactionManagerImple();
+
    @Override
    public TransactionManager getTransactionManager()
    {
-      return new TransactionManagerImple();
+      return tm;
    }
 }

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/739c0f36/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/JMSContextTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/JMSContextTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/JMSContextTest.java
index aeed55c..92c350c 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/JMSContextTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/JMSContextTest.java
@@ -29,6 +29,7 @@ import org.apache.activemq.ra.ActiveMQRAConnectionFactoryImpl;
 import org.apache.activemq.ra.ActiveMQRAConnectionManager;
 import org.apache.activemq.ra.ActiveMQRAManagedConnectionFactory;
 import org.apache.activemq.ra.ActiveMQResourceAdapter;
+import org.apache.activemq.tests.integration.jms.bridge.TransactionManagerLocatorImpl;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -63,6 +64,7 @@ public class JMSContextTest extends ActiveMQRATestBase
 
       resourceAdapter.setConnectorClassName(InVMConnectorFactory.class.getName());
       MyBootstrapContext ctx = new MyBootstrapContext();
+      TransactionManagerLocatorImpl.tm = DummyTransactionManager.tm;
       resourceAdapter.start(ctx);
       ActiveMQRAManagedConnectionFactory mcf = new ActiveMQRAManagedConnectionFactory();
       mcf.setResourceAdapter(resourceAdapter);

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/739c0f36/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/OutgoingConnectionTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/OutgoingConnectionTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/OutgoingConnectionTest.java
index 4dbf1af..f906885 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/OutgoingConnectionTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/tests/integration/ra/OutgoingConnectionTest.java
@@ -286,7 +286,6 @@ public class OutgoingConnectionTest extends ActiveMQRATestBase
    {
       setupDLQ(10);
       resourceAdapter = newResourceAdapter();
-      DummyTransactionManager.tm.tx = new DummyTransaction();
       MyBootstrapContext ctx = new MyBootstrapContext();
       resourceAdapter.start(ctx);
       ActiveMQRAManagedConnectionFactory mcf = new ActiveMQRAManagedConnectionFactory();


[5/5] activemq-6 git commit: Merging #46 on TM Fixes

Posted by cl...@apache.org.
Merging #46 on TM Fixes


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

Branch: refs/heads/master
Commit: b1d6c0b4492639b64c03baeb422a3765f7943fff
Parents: 64cc435 fe1ae2b
Author: Clebert Suconic <cl...@apache.org>
Authored: Tue Dec 16 12:18:10 2014 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue Dec 16 12:18:10 2014 -0500

----------------------------------------------------------------------
 .../jms/bridge/ActiveMQJMSBridgeLogger.java     |  4 ++
 .../activemq/jms/bridge/impl/JMSBridgeImpl.java | 52 +++++++++-----
 .../ActiveMQServiceExtensionLogger.java         | 54 +++++++++++++++
 .../service/extensions/ServiceUtils.java        | 12 +++-
 .../bridge/TransactionManagerLocatorImpl.java   |  4 +-
 .../tests/integration/ra/JMSContextTest.java    |  2 +
 .../integration/ra/OutgoingConnectionTest.java  |  1 -
 .../jms/bridge/impl/JMSBridgeImplTest.java      | 72 ++++++++++++++++++++
 8 files changed, 180 insertions(+), 21 deletions(-)
----------------------------------------------------------------------



[4/5] activemq-6 git commit: Set TM as loaded only after a TM is located.

Posted by cl...@apache.org.
Set TM as loaded only after a TM is located.

Previously the ServiceUtils component responsible for loading the
transaction manager would attempt to load a TM only once.  If it was not
found it would not try again.  This patch updates the ServiceUtils to
iterate over any TransactionManagerLocator implementations on the class
path and check each one util a TM is located.


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

Branch: refs/heads/master
Commit: fe1ae2b6980b543b49f74f5a03924483b26207c2
Parents: f28c9be
Author: Martyn Taylor <mt...@redhat.com>
Authored: Tue Dec 16 16:19:37 2014 +0000
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Tue Dec 16 17:03:05 2014 +0000

----------------------------------------------------------------------
 .../ActiveMQServiceExtensionLogger.java         | 54 ++++++++++++++++++++
 .../service/extensions/ServiceUtils.java        | 12 ++++-
 2 files changed, 64 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/fe1ae2b6/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ActiveMQServiceExtensionLogger.java
----------------------------------------------------------------------
diff --git a/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ActiveMQServiceExtensionLogger.java b/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ActiveMQServiceExtensionLogger.java
new file mode 100644
index 0000000..4e1d320
--- /dev/null
+++ b/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ActiveMQServiceExtensionLogger.java
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.service.extensions;
+
+import org.jboss.logging.BasicLogger;
+import org.jboss.logging.Logger;
+import org.jboss.logging.annotations.LogMessage;
+import org.jboss.logging.annotations.Message;
+import org.jboss.logging.annotations.MessageLogger;
+
+/**
+ * @author mtaylor
+ *
+ * Logger Code 34
+ *
+ * each message id must be 6 digits long starting with 20, the 3rd digit donates the level so
+ *
+ * INF0  1
+ * WARN  2
+ * DEBUG 3
+ * ERROR 4
+ * TRACE 5
+ * FATAL 6
+ *
+ * so an INFO message would be 341000 to 341999
+ */
+
+@MessageLogger(projectCode = "AMQ")
+public interface ActiveMQServiceExtensionLogger extends BasicLogger
+{
+   /**
+    * The default logger.
+    */
+   ActiveMQServiceExtensionLogger LOGGER = Logger.getMessageLogger(ActiveMQServiceExtensionLogger.class, ActiveMQServiceExtensionLogger.class.getPackage().getName());
+
+   @LogMessage(level = Logger.Level.WARN)
+   @Message(id = 342000, value = "Attempted to locate a Transaction Manager but none found.", format = Message.Format.MESSAGE_FORMAT)
+   void transactionManagerNotFound();
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/fe1ae2b6/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ServiceUtils.java b/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ServiceUtils.java
index 240916c..635163a 100644
--- a/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ServiceUtils.java
+++ b/activemq-service-extensions/src/main/java/org/apache/activemq/service/extensions/ServiceUtils.java
@@ -58,11 +58,19 @@ public class ServiceUtils
       if (!transactionManagerLoaded)
       {
          Iterator<TransactionManagerLocator> it = ServiceLoader.load(TransactionManagerLocator.class).iterator();
-         if (it.hasNext())
+         while (it.hasNext() && transactionManager == null)
          {
             transactionManager = it.next().getTransactionManager();
          }
-         transactionManagerLoaded = true;
+
+         if (transactionManager != null)
+         {
+            transactionManagerLoaded = true;
+         }
+         else
+         {
+            ActiveMQServiceExtensionLogger.LOGGER.transactionManagerNotFound();
+         }
       }
       return transactionManager;
    }


[3/5] activemq-6 git commit: Add TM Locator impl to JMSBridge tests

Posted by cl...@apache.org.
Add TM Locator impl to JMSBridge tests


Project: http://git-wip-us.apache.org/repos/asf/activemq-6/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-6/commit/39c61014
Tree: http://git-wip-us.apache.org/repos/asf/activemq-6/tree/39c61014
Diff: http://git-wip-us.apache.org/repos/asf/activemq-6/diff/39c61014

Branch: refs/heads/master
Commit: 39c61014ac6bb755c3afeeb9fdbe5d3121b6f4b8
Parents: 64cc435
Author: Martyn Taylor <mt...@redhat.com>
Authored: Fri Dec 12 12:51:23 2014 +0000
Committer: Martyn Taylor <mt...@redhat.com>
Committed: Tue Dec 16 16:33:58 2014 +0000

----------------------------------------------------------------------
 .../apache/activemq/jms/bridge/impl/JMSBridgeImpl.java    | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/39c61014/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
----------------------------------------------------------------------
diff --git a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
index fed9420..cefc928 100644
--- a/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
+++ b/activemq-jms-server/src/main/java/org/apache/activemq/jms/bridge/impl/JMSBridgeImpl.java
@@ -402,7 +402,10 @@ public final class JMSBridgeImpl implements JMSBridge
 
       checkParams();
 
-      TransactionManager tm = ServiceUtils.getTransactionManager();
+      if (tm == null)
+      {
+         tm = ServiceUtils.getTransactionManager();
+      }
 
       // There may already be a JTA transaction associated to the thread
 
@@ -1015,7 +1018,10 @@ public final class JMSBridgeImpl implements JMSBridge
          ActiveMQJMSBridgeLogger.LOGGER.trace("Starting JTA transaction");
       }
 
-      TransactionManager tm = ServiceUtils.getTransactionManager();
+      if (tm == null)
+      {
+         tm = ServiceUtils.getTransactionManager();
+      }
 
       // Set timeout to a large value since we do not want to time out while waiting for messages
       // to arrive - 10 years should be enough