Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

View: New views
6 Messages — Rating Filter:   Alert me  

Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by bjoernlohrmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

We are having some problems trying to use SwiftMQ as external JMS Provider with Websphere Application Server 6.1.

We have a test EAR that first retrieves the ConnectionFactory (jms/CF) and then a Destination via JNDI. The JNDI lookup for the destination hangs for a while (presumably the configured timeout) and then we get the following exception:

29.10.09 11:19:06:061 CET] 00000028 Helpers       W   NMSV0605W: Ein im Kontext "piperomatNode01Cell/nodes/piperomatNode01/servers/server1" gefundenes javax.naming.Reference-Objekt mit dem Namen "jms/testqueue" wurde an den JNDI Naming Manager gesendet. Dabei ist eine Ausnahme eingetreten. Die Referenzdaten folgen:
Klassenname der Referenz-Factory: com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory
Positions-URLs der Referenz-Factory-Klasse: <null>
Reference Class Name: javax.jms.Topic
Type: JndiLookupInfo
Content: JndiLookupInfo: jndiName="testqueue@router1"; providerURL="smqp://blo.ivu-ag.com:4001/timeout=10000;debug=true"; initialContextFactory="com.swiftmq.jndi.InitialContextFactoryImpl"
Address Type: IndirectJndiLookupAdditionalProperties
AddressContents: ffffffac ffffffed 0 5 73 72 0 14 6a 61 76 61 2e 75 74 69 6c 2e 50 72 6f 70 65 72 74 69 65 73 39 12 ffffffd0 7a  ...

Die Daten zur Ausnahme folgen:
javax.naming.NameNotFoundException: Name '' not found (timeout occured)!
        at com.swiftmq.jndi.v400.ContextImpl.lookup(Unknown Source)
        at javax.naming.InitialContext.lookup(InitialContext.java:363)
        at com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory$1.run(IndirectJndiLookupObjectFactory.java:369)
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
        at com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory.getObjectInstanceExt(IndirectJndiLookupObjectFactory.java:221)
        at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:893)
        at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookup(Helpers.java:705)
        at com.ibm.ws.naming.jndicos.CNContextImpl.processResolveResults(CNContextImpl.java:2097)
        at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1951)
        at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1866)
        at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1556)
        at com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory$1.run(IndirectJndiLookupObjectFactory.java:372)
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
        at com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory.getObjectInstanceExt(IndirectJndiLookupObjectFactory.java:221)
        at com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory.getObjectInstance(IndirectJndiLookupObjectFactory.java:149)
        at com.ibm.ws.util.ResRefJndiLookupObjectFactory.getObjectInstance(ResRefJndiLookupObjectFactory.java:144)
        at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:316)
        at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:896)
        at com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(UrlContextHelper.java:191)
        at com.ibm.ws.naming.java.javaURLContextRoot.processBoundObjectForLookup(javaURLContextRoot.java:407)
        at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1280)
        at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:384)
        at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:205)
        at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:145)
        at javax.naming.InitialContext.lookup(InitialContext.java:363)
        at de.ivu.jmsxatest.ejb.JMSXATestBean.ejbCreate(JMSXATestBean.java:45)
[...]

Our config is as follows:
Both swiftmq and WAS run on the same machine, but in different VMs. For swiftmq we are using the vanilla "router1" config. Websphere is configured as follows:

JMS Provider:
External Initial Context Factory = com.swiftmq.jndi.InitialContextFactoryImpl
External Provider URL = smqp://blo.ivu-ag.com:4001/timeout=10000;debug=true

ConnectionFactory:
Type = Unified
JNDI-Name = jms/CF
External JNDI-Name = ConnectionFactory (we also tried plainsocket@router1)

Queue:
Type = QUEUE
JNDI-Name = jms/testqueue
External JNDI-Name = testqueue@router1


Re: Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Seems you did not set the QueueName property of the queue object. Look here, last 3 pictures. QueueName must be set to testqueue@router1.

It's recommend to configure exactly as described in the How To (except intravm vs extravm).

Re: Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by bjoernlohrmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks for the quick answer! The QueueName is set to "testqueue@router1". Forgot to mention that.

Re: Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

No idea. Should work actually. However, the exception state you're looking up a javax.jms.Topic...

Re: Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Btw, if you try to configure SwiftMQ as a WAS 3rd party JMS provider instead of using our ResourceAdapter, you might ask your questions in a IBM forum as we did not test that because we provide the RA.

Re: Using SwiftMQ as external JMS Provider with Websphere Application Server 6.1

by bjoernlohrmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Actually that was a good piece of advice =) It works as an extra-vm RA. The fact that there was only an inter-vm howto mislead me to think there is only an intra-vm RA.