5 Replies Latest reply on Jul 25, 2008 9:46 AM by Peter

    Looking for help with: Error getting JMSServer member info

    Peter Newbie

      Hello. I am pretty new to JBoss and I have a problem which looks to be JMS related. I have this working enterprise application running using BEA Workshop for WebLogic Platform 10.0, which I am trying to migrate piece by piece to JBoss. Currently I am trying to set up a JMS queue. On the JBoss side I am using/testing one of the provided connection factories (the one specifically called ConnectionFactory) and a queue I have defined in my own -service.xml file that looks like:

      <?xml version="1.0" encoding="UTF-8"?>
      <server>
       <mbean code="org.jboss.mq.server.jmx.Queue"
       name="jboss.mq.destination:service=Queue,name=SolrUpdateUs">
       <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
       </mbean>
      </server>


      One the Weblogic side I have set up foreign JNDI provider talking to jnp://localhost:1099 (as specified by JBoss docs) and using org.jnp.interfaces.NamingContextFactory as the initial context factory. I also have the username and password blank (partially as I do not know where I would set those in JBoss). In the application we use a MDB to grab from the queue and do "something." When I tell the MDB to talk to the queue (which is pointed to the proper local JNDI for Weblogic that maps to the foreign JBoss JNDI) and try to test the project within BEA Workshop I get this error:

      Unable to deploy EJB: SolrIndexMDB from solr-ejb.jar:
      
      Error getting JMSServer member info
       at weblogic.ejb.container.deployer.EJBModule.activate(EJBModule.java:440)
       at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107)
       at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:381)
       at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
       at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:71)
       Truncated. see log file for complete stacktrace
      
      Error getting JMSServer member info NestedException Message is :org.jboss.mq.SpyQueue
       at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.createMDManagers(MessageDrivenBeanInfoImpl.java:1293)
       at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.activate(MessageDrivenBeanInfoImpl.java:1058)
       at weblogic.ejb.container.deployer.EJBDeployer.activate(EJBDeployer.java:1322)
       at weblogic.ejb.container.deployer.EJBModule.activate(EJBModule.java:423)
       at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107)
       Truncated. see log file for complete stacktrace
      

      Things to note is I know items are being placed on the queue as I can see them and see appropriate headers through the JBoss jmx-console. Though, I only get this far if I tell the SolrIndexMDB to grab from the previously used Weblogic JMS distributed queue (hope that makes sense).

      I've spent about a day and a half looking over this problem, and would appreciate any help anyone could offer as I am not really sure where the problem lies. I am not sure if it is a JBoss config problem or a Weblogic config problem, though I am leaning towards incomplete JBoss config on my part as all that has changed is where the queue is running.

      Thanks.

        • 1. Re: Looking for help with: Error getting JMSServer member in
          Peter Newbie

          Since I cannot seem to edit, posting a few after thoughts here. After a bit of pondering and playing I am leaning towards the problem area being the connection factory. I have tried a few of the ones provided by default. All are in the global JNDI namespace. If I get no additional error if I use either:
          ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
          XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)

          Then I noticed the this JmsXA. I turned it global by adding the tag <use-java-context>false</use-java-context>. I think, hey, it has JMS in the name, maybe it is important:
          JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
          I've had it used in an example that runs entirely on JBoss with success, however, Weblogic gives me the error:

          javax.naming.NameNotFoundException: JNDI object with [solr/JmsXA] not found:
           JNDI implementation returned null
           at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:125)
           at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:85)
           at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:121)
           at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:146)
           at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:93)
          

          It is bound, exists, and names all match correctly, and the jbossall-client.jar is only included once in the classpath. Once again, any direction, help, thoughts, suggestions will be appreciated.


          • 2. Re: Looking for help with: Error getting JMSServer member in
            Adrian Brock Master

            java:/JmsXA is NOT for remote usage.
            Use the client "ConnectionFactory"

            • 3. Re: Looking for help with: Error getting JMSServer member in
              Peter Newbie

              Thanks for the tip. I had moved in that direction, but always got that error in my original post.

              I have since moved on and added the MDB onto JBoss as well and that seems to be mostly working (different errors and what not), but messages are being added and taken off the queue successfully. However, I will still take any comments on what might be causing the Error getting JMSServer member info.

              Thought did just pop in, would java:/JmsXA be the right one to use now that it is not remote usage? Would the client "ConnectionFactory" be a bad choice? Currently I am using java:/JmsXA (well without the java context to be consistent with the Weblogic version) but could use a heads up to which is more appropriate.

              • 4. Re: Looking for help with: Error getting JMSServer member in
                Adrian Brock Master

                In Weblogic you should use their jms resource adapter (connection pool)
                in JBoss use ours (java:/JmsXA).
                Configure it with whatever jms provider you want to use.

                • 5. Re: Looking for help with: Error getting JMSServer member in
                  Peter Newbie

                  That was the direction I ended up going. Glad to know it was an appropriate one. Thanks!