Getting "IllegalStateException: Cannot set clientID, already set as <client ID>" when subscribing durable JMS Topic from JMS Provider in JBoss ESB
Issue
- I am using Jboss SOA ESB and trying to connect to a JMS topic in one of the existing remote servers (deployed on different instance of JBoss server).
- The problem is I can only make a non-durable connection to the foreign JMS Topic; as soon as I try to make it durable by specifying
subscriptionNameit fails and throws the following exception -
2013-06-05 17:06:47,749 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Start: name=jboss.esb.vfsfile:/C:/xxx/jboss-soa-p-5/jboss-as/server/default/deploy/jboss-esb.xml state=Create
org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException: Unexpected JMS error from prepareMessageReceiver
at org.jboss.soa.esb.listeners.gateway.JmsGatewayListener.doInitialise(JmsGatewayListener.java:122)
at org.jboss.soa.esb.listeners.lifecycle.AbstractManagedLifecycle.initialise(AbstractManagedLifecycle.java:133)
at org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleController.initialiseInstances(ManagedLifecycleController.java:109)
at org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleController.start(ManagedLifecycleController.java:66)
(snip)
Caused by: javax.jms.IllegalStateException: Cannot set clientID, already set as bbgAimId
at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.setClientID(ServerConnectionEndpoint.java:316)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.org$jboss$jms$server$endpoint$advised$ConnectionAdvised$setClientID$aop(ConnectionAdvised.java:85)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$setClientID_N1479100880614063379.invokeTarget(ConnectionAdvised$setClientID_N1479100880614063379.java)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
(snip)
- My JMS-provider in esb config looks like -
<jms-provider connection-factory="XAConnectionFactory"
jndi-URL="jnp://my-server-a:1099"
jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
jndi-pkg-prefix="org.jnp.interfaces" name="MySample JMS Provider">
<jms-bus busid="MySampleJmsBus">
<jms-message-filter acknowledge-mode="AUTO_ACKNOWLEDGE"
dest-name="jms/topic/xxx/MyTopic" dest-type="TOPIC"
jms-security-credential="xxxxx"
jms-security-principal="my_jms_user" persistent="true"
selector="type = 'xxxxx' and transactionReason = 'xxxxx'" transacted="true"/>
</jms-bus>
</jms-provider>
...
<services>
<service ...>
<listeners>
<jms-listener busidref="MySampleJmsBus"
clientId="my_sample_client" durableSubscriptionName="my_sample_subscription"
is-gateway="true" maxThreads="5" name="MySampleJmsListener"/>
</listeners>
- I created the JMS user
"my_jms_user"with client ID"my_sample_client"directly in theJBM_USERtable beforehand for this ESB project's jms-provider configuration.
Environment
- Red Hat JBoss SOA Platform (SOA-P) 5
- JBoss Messaging
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
