summaryrefslogtreecommitdiff
path: root/qpid/java/jca
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/jca')
-rw-r--r--qpid/java/jca/.gitignore1
-rw-r--r--qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java7
-rw-r--r--qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRASessionImpl.java9
3 files changed, 15 insertions, 2 deletions
diff --git a/qpid/java/jca/.gitignore b/qpid/java/jca/.gitignore
new file mode 100644
index 0000000000..1377554ebe
--- /dev/null
+++ b/qpid/java/jca/.gitignore
@@ -0,0 +1 @@
+*.swp
diff --git a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
index 16891290ae..53896d8872 100644
--- a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
+++ b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
@@ -57,6 +57,8 @@ import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
+import org.apache.qpid.client.Closeable;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -877,4 +879,9 @@ public class QpidRAManagedConnection implements ManagedConnection, ExceptionList
this._inManagedTx = inManagedTx;
}
+ public boolean isConnectionClosed()
+ {
+ Closeable c = (Closeable)_connection;
+ return (c == null || c.isClosed() || c.isClosing());
+ }
}
diff --git a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRASessionImpl.java b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRASessionImpl.java
index a270253c13..fdd4888a3d 100644
--- a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRASessionImpl.java
+++ b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRASessionImpl.java
@@ -410,19 +410,24 @@ public class QpidRASessionImpl implements Session, QueueSession, TopicSession, X
lock();
try
{
- Session session = getSessionInternal();
if (_cri.isTransacted() == false)
{
throw new IllegalStateException("Session is not transacted");
}
+ if(_lockedMC.isConnectionClosed())
+ {
+ throw new IllegalStateException("Attempting to call commit when the underlying connection has been closed.");
+ }
+
if (_log.isTraceEnabled())
{
_log.trace("Commit session " + this);
}
- session.commit();
+ getSessionInternal().commit();
+
}
finally
{