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:
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
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.