JmsTopicConnector checks for presence of localClientId then uses
outboundClientId
---------------------------------------------------------------------------------
Key: AMQ-3635
URL: https://issues.apache.org/jira/browse/AMQ-3635
Project: ActiveMQ
Issue Type: Bug
Components: Connector
Affects Versions: 5.4.2
Environment: running 5.4.2 on linux.
Reporter: Jeff Gillings
Priority: Minor
On the JMS bridge topic connector, if I set the outboundClientId but not the
localClientId, then the outbound client id will not be set.
This is because the JmsTopicConnector only sets the outboundClientId if the
localClientId is set. This appears to be a bug.
Here is 5.4.2 JmsTopicConnector.initializeForeignTopicConnection
protected void initializeForeignTopicConnection() throws NamingException,
JMSException {
if (outboundTopicConnection == null) {
// get the connection factories
if (outboundTopicConnectionFactory == null) {
// look it up from JNDI
if (outboundTopicConnectionFactoryName != null) {
outboundTopicConnectionFactory =
(TopicConnectionFactory)jndiOutboundTemplate
.lookup(outboundTopicConnectionFactoryName,
TopicConnectionFactory.class);
if (outboundUsername != null) {
outboundTopicConnection = outboundTopicConnectionFactory
.createTopicConnection(outboundUsername,
outboundPassword);
} else {
outboundTopicConnection =
outboundTopicConnectionFactory.createTopicConnection();
}
} else {
throw new JMSException("Cannot create localConnection - no
information");
}
} else {
if (outboundUsername != null) {
outboundTopicConnection = outboundTopicConnectionFactory
.createTopicConnection(outboundUsername,
outboundPassword);
} else {
outboundTopicConnection =
outboundTopicConnectionFactory.createTopicConnection();
}
}
}
>>>> if (localClientId != null && localClientId.length() > 0) { //
>>>> CHECKS for existence of localClientId
outboundTopicConnection.setClientID(getOutboundClientId()); //
THEN uses outboundClientId
}
outboundTopicConnection.start();
}
I'm thinking the above code should check for existence of outboundClientId
instead of localClientId
Compare this to:
protected void initializeLocalTopicConnection() throws NamingException,
JMSException {
if (localTopicConnection == null) {
// get the connection factories
if (localTopicConnectionFactory == null) {
if (embeddedConnectionFactory == null) {
// look it up from JNDI
if (localConnectionFactoryName != null) {
localTopicConnectionFactory =
(TopicConnectionFactory)jndiLocalTemplate
.lookup(localConnectionFactoryName,
TopicConnectionFactory.class);
if (localUsername != null) {
localTopicConnection = localTopicConnectionFactory
.createTopicConnection(localUsername,
localPassword);
} else {
localTopicConnection =
localTopicConnectionFactory.createTopicConnection();
}
} else {
throw new JMSException("Cannot create localConnection -
no information");
}
} else {
localTopicConnection =
embeddedConnectionFactory.createTopicConnection();
}
} else {
if (localUsername != null) {
localTopicConnection =
localTopicConnectionFactory.createTopicConnection(localUsername,
localPassword);
} else {
localTopicConnection =
localTopicConnectionFactory.createTopicConnection();
}
}
}
>>>> if (localClientId != null && localClientId.length() > 0) { //
>>>> CHECKS for existence of localClientId
localTopicConnection.setClientID(getLocalClientId()); //
THEN uses localClientId
}
localTopicConnection.start();
}
--
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