0 Replies Latest reply on Aug 30, 2006 3:29 PM by Joe W

    HAJMS with durable topic subscribers; clientID already regis

    Joe W Newbie

      I have two clustered JMS servers running JBoss [Zion] 4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000); the servers run linux (debian). JMS data is persisted to a postgres8.1 database; each server has the same configuration (same JMS destinations; same datasource for the JMS persistence manager, etc.) and the same ear files deployed.

      I have a Topic with one non-durable subscriber (no client id required) and two durable topic subscribers as MDBs (durable subscribers have client ids 'myClientId' and 'anotherClientId'). I deploy the same ear file to each of the two nodes. The node that is not the master node outputs log entries (pasted below) for 'JMS provider failure'; each of the two messages indicate that the client id is already connected to the server. Now this makes sense because the master node has the same two MDBs deployed. I have read in another forum post that the JMS spec mentions that if another connection with the same clientID is already running the JMS provider should detect the duplicate ID and throw an InvalidClientIDException (I did not see this in the spec when I searched on "InvalidClientIDException" but it seems reasonable).

      As you can see the log entries are only WARN level entries but they continue to be logged. I have seen a forum post that says to use the "ClientMonitorInterceptor" in jbossmq-service.xml but I am not confident that this is a good solution. Has anyone else who has run into this problem found a good solution? The posts that I have seen do not provide a solution. Perhaps it is nothing of high concern.

      Thanks for any help.


      10:55:54,538 INFO [EJB3 MDB Create Recovery Thread][MDB] Trying to reconnect to JMS provider
      10:55:54,538 INFO [EJB3 MDB Create Recovery Thread][MDB] Reconnected to JMS provider
      10:55:54,579 INFO [EJB3 MDB Create Recovery Thread][MDB] Reconnected to JMS provider
      10:55:54,579 WARN [EJB3 MDB Create Recovery Thread][MDB] JMS provider failure detected:
      javax.jms.InvalidClientIDException: This client id 'myClientId' is already registered!
       at org.jboss.mq.sm.AbstractStateManager.addLoggedOnClientId(AbstractStateManager.java:196)
       at org.jboss.mq.server.JMSDestinationManager.checkID(JMSDestinationManager.java:384)
       at org.jboss.mq.server.JMSServerInterceptorSupport.checkID(JMSServerInterceptorSupport.java:138)
       at org.jboss.mq.server.TracingInterceptor.checkID(TracingInterceptor.java:226)
       at org.jboss.mq.server.JMSServerInvoker.checkID(JMSServerInvoker.java:139)
       at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:120)
       at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:396)
       at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:392)
       at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
       at java.lang.Thread.run(Thread.java:595)
      10:55:54,579 INFO [EJB3 MDB Create Recovery Thread][MDB] Trying to reconnect to JMS provider
      10:56:04,577 WARN [EJB3 MDB Create Recovery Thread][MDB] JMS provider failure detected:
      javax.jms.JMSSecurityException: The login id has an assigned client id 'anotherClientId', that is already connected to the server!
       at org.jboss.mq.sm.AbstractStateManager.checkUser(AbstractStateManager.java:180)
       at org.jboss.mq.server.JMSDestinationManager.checkUser(JMSDestinationManager.java:627)
       at org.jboss.mq.server.JMSServerInterceptorSupport.checkUser(JMSServerInterceptorSupport.java:288)
       at org.jboss.mq.server.TracingInterceptor.checkUser(TracingInterceptor.java:704)
       at org.jboss.mq.server.JMSServerInvoker.checkUser(JMSServerInvoker.java:289)
       at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:204)
       at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:396)
       at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:392)
       at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
       at java.lang.Thread.run(Thread.java:595)