From 452ccdb117a8e6e9c292bbd3daa04212ca99a785 Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Mon, 10 Sep 2007 13:08:36 +0000 Subject: QPID-585 : Created a new StateManager for each subsequent makeBrokerConnection call during the initial connection. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@574237 13f79535-47bb-0310-9956-ffa450edef68 --- java/client/src/main/java/org/apache/qpid/client/AMQConnection.java | 6 ++++++ .../java/org/apache/qpid/client/protocol/AMQProtocolHandler.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'java/client/src') diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java index 81b2580317..1cbf59b22a 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java @@ -29,6 +29,7 @@ import org.apache.qpid.client.failover.FailoverProtectedOperation; import org.apache.qpid.client.failover.FailoverRetrySupport; import org.apache.qpid.client.protocol.AMQProtocolHandler; import org.apache.qpid.client.state.AMQState; +import org.apache.qpid.client.state.AMQStateManager; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.exchange.ExchangeDefaults; import org.apache.qpid.framing.AMQShortString; @@ -298,6 +299,11 @@ public class AMQConnection extends Closeable implements Connection, QueueConnect { lastException = e; + //We need to change protocol handler here as an error during the connect will not + // cause the StateManager to be replaced. So the state is out of sync on reconnect + // This can be seen when a exception occurs during connection. i.e. log4j NoSuchMethod. (using < 1.2.12) + _protocolHandler.setStateManager(new AMQStateManager()); + if (_logger.isInfoEnabled()) { _logger.info("Unable to connect to broker at " + _failoverPolicy.getCurrentBrokerDetails(), diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java index 06446130b5..aac5886c80 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java @@ -684,7 +684,10 @@ public class AMQProtocolHandler extends IoHandlerAdapter public void setStateManager(AMQStateManager stateManager) { _stateManager = stateManager; - _protocolSession.setStateManager(stateManager); + if (_protocolSession != null) + { + _protocolSession.setStateManager(stateManager); + } } public AMQProtocolSession getProtocolSession() -- cgit v1.2.1