diff options
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/AMQSession.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java index c253b8b641..d2ef457c94 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java @@ -494,15 +494,22 @@ public abstract class AMQSession extends Closeable implements Session, QueueSess public void checkNotClosed() throws JMSException { - // if the Connection has closed then we should throw any exception that has occured that we were not waiting for - AMQStateManager manager = _connection.getProtocolHandler().getStateManager(); - if (isClosed() && manager.getCurrentState().equals(AMQState.CONNECTION_CLOSED) && manager.getLastException() != null) + try { - JMSException jmse = new IllegalStateException("Object " + toString() + " has been closed"); - jmse.setLinkedException(manager.getLastException()); - throw jmse; + super.checkNotClosed(); + } + catch (IllegalStateException ise) + { + // if the Connection has closed then we should throw any exception that has occured that we were not waiting for + AMQStateManager manager = _connection.getProtocolHandler().getStateManager(); + + if (manager.getCurrentState().equals(AMQState.CONNECTION_CLOSED) && manager.getLastException() != null) + { + ise.setLinkedException(manager.getLastException()); + } + + throw ise; } - super.checkNotClosed(); } public BytesMessage createBytesMessage() throws JMSException |
