Discussions

EJB programming & troubleshooting: Weblogic - JBoss - Foreign JMS Server - Problem

  1. I have an enterprise application which runs on JBoss 3.2.3. Communication to this app is through the JBoss JMS queues. I'm trying to set up JBoss as the Foreign JMS provider so that the client app running on Weblogic 8.1.4 can put & get messages off the JBoss queues.

    Here is the list of steps I'm doing,
    1. Configure a new Foreign JMS Server ....
    Name: ABC JBOSS JMS Server
    JNDI Initial Context Factory: org.jnp.interfaces.NamingContextFactory
    JNDI Connection URL: jnp://localhost:1099

    2. Configure a new Foreign JMSConnection Factory...
    Name: ABC JMS Connection Factory
    Local JNDI Name: jms/localABC
    Remote JNDI Name: UIL2ConnectionFactory
    User Name: test
    Password: test
    Confirm Password: test

    3. Configure a new Foreign JMSDestination...
    Name: ABC SOA Input JMS Destination
    Local JNDI Name: jms/soaDemoInputQueue
    Remote JNDI Name: queue/soaDemoInput

    The JBoss has queue level security enabled. When my client tries to put a message its getting the error,

    MAdapter ERROR - (025):Cannot obtain queueConnection from queueConnectionfactory jms/LocalABC; context(JMSAdapterUtil.getQueueConnection()); Nested:User: null is NOT authenticated
    javax.jms.JMSSecurityException: User: null is NOT authenticated

    I have specified the username and password in,
    sbm60> Foreign JMS Servers> ABC JBOSS JMS Server> Foreign JMSConnection Factories> ABC JMS Connection Factory

    Looks like WLS is not passing the username and password. Any thoughts??
  2. Note: The user name and password are only used when the Foreign JMS Connection Factory is used inside a resource-reference in an EJB or a servlet, and when the Container mode of authentication is used.

    That is from the WLS doc. Is your client an EJB or servlet? If yes, are you using the conn factory as a resource reference with container mode enabled.......

    Your web.xml if client is a servlet should have something like:
       <resource-ref>
         <res-ref-name>your/qcf/name</res-ref-name>
        <res-type>javax.jms.QueueConnectionFactory</res-type>
        <res-auth>CONTAINER</res-auth>
      </resource-ref>