[jboss-user] [JNDI and Naming] New message: "Re: Remote vs. Local client lookup of same JNDI object"

Ben Cotton do-not-reply at jboss.com
Wed Feb 10 14:30:47 EST 2010

User development,

A new message was posted in the thread "Remote vs. Local client lookup of same JNDI object":


Author  : Ben Cotton
Profile : http://community.jboss.org/people/ben.cotton@rutgers.edu

Just as an FYI, my dialog with senior technical staff at IBM resulted in the following personal musings:
1.  This is not a JBoss AS 5.1 lookup "bug".  No where does the JCA specification address the requirement that JCA compatible application servers accommodate a +remote+ client lookup of a JNDI bound ConnectionFactory name that bridges to a provider's ConnectionFactory implementation via a resource adapter.
2.  This is not an IBM resource adapter "bug".  The exact same thing happens, in the exact same way, when my +remote+ client does a lookup of a JNDI bound ConnectionFactory name ('JmsXA') that bridges to a JBoss provided ConnectionFactory implementation via a JBoss provided resource adapter. (see below for details).  Like IBM's RA ConnectionFactory, the jBoss RA ConnectionFactory lookup works perfect when the client code is +locally+ deployed to JBoss AS.
3.  Though theres are  not "bugs", we still suffer from not realizing an ideal  (remote_client-->JBoss JNDI lookup-->IBM JCA RA bridge-->WSMQ) capability.
4.  NOTE:  The following bridge works ideally (remote_client-->Apache Geronimo JNDI lookup-->IBM JCA RA bridge--> WSMQ).
5.  NOTE:  The following bridge works ideally (remote_client-->GlassFish JNDI lookup-->IBM JCA RA bridge-->WSMQ).
6.  NOTE:  The following bridge has a (not ideal) functional work-around  (remote_client-->WebLogic-->non-JCA WLS:MQ bridge-->WSMQ)
7.  Though not a JBoss "bug", it may be appropriate to create a JBoss "feature enhancement" JIRA that requests that a capabilty similar to #4-#6 above be provided in JBoss AS.  Agree?
Here are details for confirming #2.
     (i)     Change the default +$JBOSS_HOME/server/default/deploy/messaging+/+jms-ds.xml+ as follows
> <?xml version="1.0" encoding="UTF-8"?>
> <connection-factories>
>   <!-- ==================================================================== -->
>   <!-- JMS Stuff                                                            -->
>   <!-- ==================================================================== -->
>    <!--
>        The JMS provider loader. Currently pointing to a non-clustered ConnectionFactory. Need to
>        be replaced with a clustered non-load-balanced ConnectionFactory when it becomes available.
>        See http://jira.jboss.org/jira/browse/JBMESSAGING-843.
>    -->
>    <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
>           name="jboss.messaging:service=JMSProviderLoader,name=JMSProvider">
>       <attribute name="ProviderName">DefaultJMSProvider</attribute>
>       <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
>       <attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
>       <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute>
>       <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
>    </mbean>
>    <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->
>    <tx-connection-factory>
>       <jndi-name>JmsXA</jndi-name>
>       <xa-transaction/>
>       <rar-name>jms-ra.rar</rar-name>
>      * <use-java-context>false</use-java-context> <!-- add this line to "out of the box" config -->*
>       <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:/DefaultJMSProvider</config-property>
>       <max-pool-size>20</max-pool-size>
>       <security-domain-and-application>JmsXARealm</security-domain-and-application>
>       <depends>jboss.messaging:service=ServerPeer</depends>
>    </tx-connection-factory>
> </connection-factories>
 (ii)  reboot JBoss AS 5.1 process
(iii)  confirm (from JMX consoleJNDIView) that the 'JmsXA' ConnectionFactory name is bound in JBoss' global JNDI tree, referencing the JBoss resource adapter ConnectionFactory implementation
> +- JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
(iv)  execute the followng lookup code from remote client Java application  (sorry this code is listed as image, text cut/paste stopped working for me for this "Post reply" session)
(v)  Confirm from the stdout that this code's lookup() of the JBoss apapter's ConnectionFactory invoke returned NULL (exactly like the lookup() of the IBM adapter's ConnectionFactory)


To reply to this message visit the message page: http://community.jboss.org/message/525558#525558

More information about the jboss-user mailing list