0 Replies Latest reply on Nov 6, 2012 7:02 AM by akostin

    Tibco EMS Durable MDB: "dublicate client id" problem

      Hello,

       

      We have JBoss AS 5.1 clustered configuration (2 nodes behind Apache)

       

      we are using MDB for listening Topic with *durable* subscription that is deployed in separate Tibco EMS server. Most configuration was taken from https://community.jboss.org/wiki/JBossEAP5IntegrationwithTibcoEMS article and works fine.

       

      Tibco Provider is configured in tibco-js-ds.xml

       

      <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name=":service=JMSProviderLoader,name=TibjmsProvider">
       <attribute name="ProviderName">TIBCOJMSProvider</attribute>
       <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
       
       <attribute name="QueueFactoryRef">/server/app/S001DEV:xaqcf</attribute>
       <attribute name="TopicFactoryRef">/server/app/S001DEV:xatcf</attribute>
       <attribute name="Properties">
        java.naming.security.principal=***
        java.naming.security.credentials=***
        java.naming.factory.initial=com.***.ContextFactory
        java.naming.provider.url=dbnaming:(ldap://ldap-address-goes-here)
       java.naming.referral=follow
       </attribute>
      </mbean>
      

       

       

      But it seems like JBoss starts two MDB instances (one per each node), that leads (as expected) to simultaneous subscription with the same clientID:

       

      javax.jms.InvalidClientIDException: clientId already exists

      at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:390)

      at com.tibco.tibjms.TibjmsConnection.setClientID(TibjmsConnection.java:1873)

      at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupTopicConnection(JmsActivation.java:604)

      at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupConnection(JmsActivation.java:504)

      at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:353)

      at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:292)

      at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:733)

      at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)

      at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)

      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

       

      Could you please suggest any solution how to set up automatic discovery and start MDB durable only in one active node?

       

      From JBoss documentation it follows that it must work out of the box, but as I can suggest for JBoss messaging only. How one can configure it for Tibco messaging infrastructure?

      Thanks,

      Andrey