[hornetq-commits] JBoss hornetq SVN: r9190 - trunk/src/main/org/hornetq/ra.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Apr 30 10:56:42 EDT 2010


Author: jmesnil
Date: 2010-04-30 10:56:42 -0400 (Fri, 30 Apr 2010)
New Revision: 9190

Modified:
   trunk/src/main/org/hornetq/ra/HornetQRAManagedConnection.java
Log:
https://jira.jboss.org/jira/browse/HORNETQ-349: Clarify XA/transaction behavior of resource adapter

* use a non-transacted JMS session for work performed outside a TX branch (JCA 1.6 ?\194?\1677.15.1.1)

Modified: trunk/src/main/org/hornetq/ra/HornetQRAManagedConnection.java
===================================================================
--- trunk/src/main/org/hornetq/ra/HornetQRAManagedConnection.java	2010-04-30 12:41:09 UTC (rev 9189)
+++ trunk/src/main/org/hornetq/ra/HornetQRAManagedConnection.java	2010-04-30 14:56:42 UTC (rev 9190)
@@ -90,8 +90,11 @@
    // Physical JMS connection stuff
    private Connection connection;
 
+   // auto-commit session, used outside XA or Local transaction
    private Session session;
 
+   private Session transactedSession;
+
    private XASession xaSession;
 
    private XAResource xaResource;
@@ -124,6 +127,7 @@
 
       connection = null;
       session = null;
+      transactedSession = null;
       xaSession = null;
       xaResource = null;
 
@@ -251,6 +255,11 @@
                session.close();
             }
 
+            if (transactedSession != null)
+            {
+               transactedSession.close();
+            }
+
             if (xaSession != null)
             {
                xaSession.close();
@@ -268,7 +277,7 @@
       }
       catch (Throwable e)
       {
-         throw new ResourceException("Could not properly close the session and connection", e);
+         throw new ResourceException("Could not properly close the transactedSession and connection", e);
       }
    }
 
@@ -562,12 +571,24 @@
       } 
       else
       {
-         if (HornetQRAManagedConnection.trace)
+         if (inManagedTx)
          {
-            HornetQRAManagedConnection.log.trace("getSession() -> session " + xaSession.getSession());
+            if (HornetQRAManagedConnection.trace)
+            {
+               HornetQRAManagedConnection.log.trace("getSession() -> transactedSession " + transactedSession);
+            }
+
+            return transactedSession;
          }
+         else
+         {
+            if (HornetQRAManagedConnection.trace)
+            {
+               HornetQRAManagedConnection.log.trace("getSession() -> session " + session);
+            }
 
-         return session;
+            return session;
+         }
       }
    }
 
@@ -737,7 +758,8 @@
             connection.setExceptionListener(this);
 
             xaSession = ((XATopicConnection)connection).createXATopicSession();
-            session = ((TopicConnection)connection).createTopicSession(transacted, acknowledgeMode);
+            transactedSession = ((TopicConnection)connection).createTopicSession(transacted, acknowledgeMode);
+            session = ((TopicConnection)connection).createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
          }
          else if (cri.getType() == HornetQRAConnectionFactory.QUEUE_CONNECTION)
          {
@@ -753,7 +775,8 @@
             connection.setExceptionListener(this);
 
             xaSession = ((XAQueueConnection)connection).createXAQueueSession();
-            session = ((QueueConnection)connection).createQueueSession(transacted, acknowledgeMode);
+            transactedSession = ((QueueConnection)connection).createQueueSession(transacted, acknowledgeMode);
+            session = ((QueueConnection)connection).createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
          }
          else
          {
@@ -769,7 +792,8 @@
             connection.setExceptionListener(this);
 
             xaSession = ((XAConnection)connection).createXASession();
-            session = connection.createSession(transacted, acknowledgeMode);
+            transactedSession = connection.createSession(transacted, acknowledgeMode);
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
          }
       }
       catch (JMSException je)



More information about the hornetq-commits mailing list