Hey Justin,
This is the stacktrace for the NPE:
09:07:37,798 WARN [org.jboss.resource.adapter.jms.inflow.JmsActivation] (default-threads - 1) Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@22aa22aa(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@950a950a destination=/topic/defaultEventTopic destinationType=javax.jms.Topic acknowledgeMode=Auto-acknowledge subscriptionDurability=false clientID=genericClientID reconnectInterval=10 reconnectAttempts=-1 user=null maxMessages=1 minSession=1 maxSession=15 connectionFactory=remote-conn-factory jndiParameters={java.naming.provider.url=192.168.0.57:1099, java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}): java.lang.NullPointerException at org.jboss.resource.adapter.jms.inflow.JmsActivation.lookup(JmsActivation.java:538) [generic-jms-ra-jar-1.0.4.Final-SNAPSHOT.jar:1.0.4.Final-SNAPSHOT]
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupConnection(JmsActivation.java:416) [generic-jms-ra-jar-1.0.4.Final-SNAPSHOT.jar:1.0.4.Final-SNAPSHOT]
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupConnection(JmsActivation.java:398) [generic-jms-ra-jar-1.0.4.Final-SNAPSHOT.jar:1.0.4.Final-SNAPSHOT]
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupActivation(JmsActivation.java:302) [generic-jms-ra-jar-1.0.4.Final-SNAPSHOT.jar:1.0.4.Final-SNAPSHOT]
at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:518) [generic-jms-ra-jar-1.0.4.Final-SNAPSHOT.jar:1.0.4.Final-SNAPSHOT]
at org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:218) [ironjacamar-core-impl-1.0.23.Final-redhat-1.jar:1.0.23.Final-redhat-1]
at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:828)
at java.lang.Thread.run(Thread.java:736) [vm.jar:1.6.0]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
The producer in my scenario is a an application running in JBoss AS 4.3. We have many consumers setup with the same JNDI properties I'm trying to use in my MDB in JBoss7 (see below); non of them is a standalone application but all MDBs deployed in many JBoss AS 4.3 instances.
The connection factory definition on the producer looks like this (my-jms-ds.xml):
<!-- The JMS provider loader -->
<mbean code="org.jboss.jms.jndi.JMSProviderLoader"
name="jboss.jms:service=JMSProviderLoader,name=MyJMSProvider">
<attribute name="ProviderName">MyJMSProvider</attribute>
<attribute name="ProviderAdapterClass">
org.jboss.jms.jndi.JNDIProviderAdapter
</attribute>
<!-- The combined connection factory -->
<attribute name="FactoryRef">/ClusteredConnectionFactory</attribute>
<!-- The queue connection factory -->
<attribute name="QueueFactoryRef">/ClusteredConnectionFactory</attribute>
<!-- The topic factory -->
<attribute name="TopicFactoryRef">/ClusteredConnectionFactory</attribute>
<!-- HAJNDI to access JMS-->
<attribute name="Properties">
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
</attribute>
</mbean>
<!-- JMS Resource adapter, use this to get transacted JMS in beans -->
<tx-connection-factory>
<jndi-name>remote-conn-factory</jndi-name>
<use-java-context>false</use-java-context>
<xa-transaction>false</xa-transaction>
<rar-name>jms-ra.rar</rar-name>
<connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
<config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
<config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/MyJMSProvider</config-property>
<config-property name="Strict" type="java.lang.Boolean">false</config-property>
<max-pool-size>40</max-pool-size>
</tx-connection-factory>
And this is my connection definition in standalone-full.xml
<connection-definitions>
<connection-definition class-name="org.jboss.resource.adapter.jms.JmsManagedConnectionFactory" jndi-name="java:/GenericJmsXA" enabled="true" use-java-context="false" pool-name="GenericJmsXA" use-ccm="true">
<config-property name="JndiParameters">
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory; java.naming.provider.url=192.168.0.57:1099; java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
<xa-pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>10</max-pool-size>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
<pad-xid>false</pad-xid>
<wrap-xa-resource>true</wrap-xa-resource>
</xa-pool>
<security>
<application/>
</security>
</connection-definition>
</connection-definitions>
I've debug JmsActivation code and it while setupDestination() throws no exception setupConnection() does.
I hope this helps clarify what's going on!
Thanks for your support