[
https://issues.apache.org/jira/browse/AMQ-3752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13220786#comment-13220786
]
Torsten Mielke commented on AMQ-3752:
-------------------------------------
Fixed in revision #1296094.
> Repeated call to PooledConnection.setClientID() with the same clientId should
> not raise a IllegalStateException("Setting clientID on a used Connection is
> not allowed")
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-3752
> URL: https://issues.apache.org/jira/browse/AMQ-3752
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.5.1
> Reporter: Torsten Mielke
> Assignee: Torsten Mielke
> Labels: PooledConnectionFactory
> Fix For: 5.6.0
>
> Attachments: AMQ-3752.patch
>
>
> Calling ActiveMQConnection.setClientID() twice currently raises an
> IllegalStateException:
> {code:title=ActiveMQConnection.java}
> public void setClientID(String newClientID) throws JMSException {
> checkClosedOrFailed();
> if (this.isConnectionInfoSentToBroker) {
> throw new IllegalStateException("Setting clientID on a used
> Connection is not allowed");
> }
>
> this.info.setClientId(newClientID);
> this.userSpecifiedClientID = true;
> ensureConnectionInfoSent();
> }
> {code}
> This successfully prevents from overriding clientID on an already started
> connection.
> However in the case of using a Camel JMS endpoint with durable subscriptions,
> transactions and configuring for a PooledConnectionFactory, this current
> behavior causes problems.
> Due to the durable sub a clientID needs to be set on the connection. This
> happens at startup of the JMS consumer by calling
> ActiveMQConnection.setClientID().
> If you stop the Camel route, the connection will be released back to the pool
> with the clientID remaining.
> If you restart the Camel route, it will setup a new Spring DMLC and
> reinitialize the connection with the configured clientId. A new connection is
> obtained from the pool and setClientID() is invoked on that connection. This
> will raise the above Exception.
> If we try to set the same clientID on the PooledConnection again, we should
> simply ignore the call rather than raising an exception.This allows the
> camel-jms consumer to be restarted.
> Without a fix, its impossible restart a Camel route that uses camel-jms with
> durable subscriptions and the PooledConnectionFactory.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira