summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/common/src')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java14
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java5
2 files changed, 16 insertions, 3 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
index ab9d4431a3..0f9f1445c8 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
@@ -463,9 +463,17 @@ public class Connection extends ConnectionInvoker
{
for (Session ssn : sessions.values())
{
- map(ssn);
- ssn.attach();
- ssn.resume();
+ if (ssn.isTransacted())
+ {
+ removeSession(ssn);
+ ssn.setState(Session.State.CLOSED);
+ }
+ else
+ {
+ map(ssn);
+ ssn.attach();
+ ssn.resume();
+ }
}
}
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java
index fa663e58a7..214d4534c1 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java
@@ -536,6 +536,7 @@ public class Session extends SessionInvoker
if (state == DETACHED && transacted)
{
state = CLOSED;
+ delegate.closed(this);
connection.removeSession(this);
throw new SessionException(
"Session failed over, possibly in the middle of a transaction. " +
@@ -1012,4 +1013,8 @@ public class Session extends SessionInvoker
this.transacted = b;
}
+ public boolean isTransacted(){
+ return transacted;
+ }
+
}