diff options
Diffstat (limited to 'qpid/java/common/src')
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java | 14 | ||||
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Session.java | 5 |
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; + } + } |
