Okiee...
I'm trying to solve this problem of <ejb-local-ref> and JNDI lookup problems for tutorial
i published nearly 2 yrs back using JBoss-3.2.1
Here it goes.....
As can be seen by the dtds of jboss.xml for JBoss-3.21 under docs/dtds directory...
it states that you don't need <ejb-local-ref>.. as
Snippet from jboss.xml dtd for JBoss.-3.21.
<enterprise-beans>
<entity>
<ejb-name />
<jndi-name />
<local-jndi-name />
<read-only>
<configuration-name>
<security-proxy> --------------- no <ejb-local-ref> tag defined here...
<ejb-ref>
<resource-ref>
<res-ref-name />
<resource-name />
</resource-ref>
<resource-env-ref>
<clustered />
<cluster-config>
</entity>
<session>
<ejb-name />
<jndi-name />
<local-jndi-name />
<configuration-name>
<security-proxy> ---------------- no <ejb-local-ref> tag defined here...
<ejb-ref>
<resource-ref>
<res-ref-name />
<resource-name />
</resource-ref>
<resource-env-ref>
<clustered />
<cluster-config>
</session>
Similar is the case for MDB's as well. So what that mean is that the following tags are not needed as shown in tutorial
at various places as there is a bug in JBoss-3.2.1 for this part of
jboss.xml file.
Since
Item, Supplier, Customer, Manager, DeliverItem, RequestItem are
invoked by SessionFacades in same JVM we don't need
<ejb-ref>
tag so we need only
<ejb-local-ref>
tag only.
But in JBoss-3.2.1 it is not needed as shown above in the snippet code
from
jboss.xml [/i] dtd and it works fine without that.
Note : It wont be a good design at all to invoke call from Session Facade on BMP/CMP beans using<ejb-ref>
tag if they are in same JVM. As the overhead of calls will be very high. So lets remove those tags which we don't need at all. And leave rest of the tags
This is from StoreAccessBean.java after all the 8 chapters are completed.
/**
* @ejb.bean name="StoreAccess"
* jndi-name="StoreAccessBean"
* type="Stateless"
* @ejb.dao class="au.com.tusc.session.StoreAccessDAO"
* impl-class="au.com.tusc.dao.StoreAccessDAOImpl"
* @ejb.resource-ref res-ref-name="jdbc/DefaultDS"
* res-type="javax.sql.Datasource"
* res-auth="Container"
* @jboss.resource-ref res-ref-name="jdbc/DefaultDS"
* jndi-name="java:/DefaultDS"
* @ejb.ejb-ref ejb-name="Customer"
* view-type="local"
* ref-name="ejb/CustomerLocal"
* @ejb.ejb-ref ejb-name="Manager"
* view-type="local"
* ref-name="ejb/ManagerLocal"
* @ejb.ejb-ref ejb-name="Item"
* view-type="local"
* ref-name="ejb/ItemLocal"
* @ejb.ejb-ref ejb-name="Supplier"
* view-type="local"
* ref-name="ejb/SupplierLocal"
**/
Note : there is no @jboss.ejb-ref-jndi tag shown above ... remove these ones shown below from StroAcessBean.java. @jboss.ejb-ref-jndi ref-name="CustomerLocal"
jndi-name="CustomerLocal"
@jboss.ejb-ref-jndi ref-name="ItemLocal"
jndi-name="ItemLocal"
@jboss.ejb-ref-jndi ref-name="SupplierLocal"
jndi-name="SupplierLocal"
@jboss.ejb-ref-jndi ref-name="ManagerLocall"
jndi-name="ItemLocal"
NOTE : - This is a mistake in the tutorial :-( Now in of JBoss-4.0. you will need these tags in StoreAccessBean.java as shown below
@jboss.ejb-local-ref ref-name=?ejb/SupplierLocal? jndi-name=?SupplierLocal?
@jboss.ejb-local-ref ref-name=?ejb/ManagerLocal? jndi-name=?ManagerLocal?
@jboss.ejb-local-ref ref-name=?ejb/ItemLocal? jndi-name=?SupplierLocal?
@jboss.ejb-local-ref ref-name=?ejb/CustomerLocal? jndi-name=?CustomerLocal?
No changes are required in Chapter ? 4.
Changes in Chapter 5.
Two changes here... in Customer and Manager bean
/**
* @ejb.bean name="Customer"
* jndi-name="CustomerBean"
* type="BMP"
* view-type="local"
* @ejb.dao class="au.com.tusc.bmp.CustomerDAO"
* impl-class="au.com.tusc.dao.CustomerDAOImpl"
* @ejb.resource-ref res-ref-name="jdbc/DefaultDS"
* res-type="javax.sql.Datasource"
* res-auth="Container"
* @jboss.resource-ref res-ref-name="jdbc/DefaultDS"
* jndi-name="java:/DefaultDS"
* @ejb.util generate="logical"
**/
1. view-type=?local for @ejb.bean has been added so that doesn't generate the remote interface (Don't get confused here i'm not referring to Remote interface of Bean here ..;-) )
2 .
@ejb.util generate="logical"
this is being added so that it generates only logical names for lookup not physical names, as beans are in same JVM so we don't need any physical names.
Similarly for Manager Bean as well.
/**
* @ejb.bean name="Manager"
* jndi-name="ManagerBean"
* type="BMP"
* view-type="local"
* @ejb.dao class="au.com.tusc.bmp.ManagerDAO"
* impl-class="au.com.tusc.dao.ManagerDAOImpl"
* @ejb.resource-ref res-ref-name="jdbc/DefaultDS"
* res-type="javax.sql.Datasource"
* res-auth="Container"
* @jboss.resource-ref res-ref-name="jdbc/DefaultDS"
* jndi-name="java:/DefaultDS"
* @ejb.util generate="logical"
**/
Chapter 6.
Same as two changes in Chapter 5 in Item Bean and Supplier Bean.
1. @ejb.bean view-type=?local?
2. @ejb.util generate physical=?true?
In Item Bean
/**
* @ejb.bean name="Item"
* jndi-name="ItemBean"
* type="CMP"
* primkey-field="itemID"
* schema="MyStoreItem"
* cmp-version="2.x"
* view-type="local"
* @ejb.persistence
* table-name="Item"
* @ejb.finder
* query="SELECT OBJECT(a) FROM MyStoreItem as a"
* signature="java.util.Collection findAll()"
* @ejb.finder
* query="SELECT OBJECT(b) FROM MyStoreItem b where b.supplierID = ?1"
* signature="java.util.Collection findSupplierID(java.lang.String supplierID)"
* @ejb.finder
* query="SELECT OBJECT(c) FROM MyStoreItem c where c.quantity = 0"
* signature="java.util.Collection findByOutOfStock()"
* @ejb.util generate="logical"
**/
Supplier Bean
/**
* @ejb.bean name="Supplier"
* jndi-name="SupplierBean"
* type="CMP"
* primkey-field="supplierID"
* schema="MyStoreSupplier"
* cmp-version="2.x"
* view-type="local"
* @ejb.persistence
* table-name="Supplier"
* @ejb.finder
* query="SELECT OBJECT(a) FROM MyStoreSupplier as a"
* signature="java.util.Collection findAll()"
* @ejb.finder
* query="SELECT Object(b) FROM MyStoreSupplier as b where b.userID = ?1"
* signature="au.com.tusc.cmp.SupplierLocal findUserID(java.lang.String userID)"
* @ejb.util generate="logical"
**/
Chapter 7.
Only change here is that
@jboss.ejb-ref-jndi ref-name="ItemLocal"
jndi-name="ItemLocal"
is being removed from DeliverItemsBean as it is not needed in this version of JBoss-3.2.1 as shown below
/**
* @ejb.bean name="DeliverItems"
* acknowledge-mode="Auto-acknowledge"
* destination-type="javax.jms.Queue"
* subscription-durability="NonDurable"
* transaction-type="Bean"
* @ejb.ejb-ref
* ejb-name="StoreAccess"
* view-type="remote"
* ref-name="StoreAccess"
* @ejb.ejb-ref
* ejb-name="Item"
* view-type="local"
* ref-name="ejb/ItemLocal"
* @jboss.ejb-ref-jndi ref-name="StoreAccess"
* jndi-name="StoreAccessBean"
* @jboss.destination-jndi-name
* name="queue/DelMdbQueue"
**/
But with JBoss-4.0 you will need this tag
@jboss.ejb-local-ref ref-name=?ejb/ItemLocal? jndi-name=?ItemLocal?
Similarly in RequestItem Bean
/**
* @ejb.bean name="RequestItems"
* acknowledge-mode="Auto-acknowledge"
* destination-type="javax.jms.Queue"
* subscription-durability="NonDurable"
* transaction-type="Bean"
* @ejb.ejb-ref
* ejb-name="StoreAccess"
* view-type="remote"
* ref-name="StoreAccess"
* @ejb.ejb-ref
* ejb-name="Supplier"
* view-type="local"
* ref-name="ejb/SupplierLocal"
* @jboss.ejb-ref-jndi ref-name="StoreAccess"
* jndi-name="StoreAccessBean"
* @jboss.destination-jndi-name
* name="queue/MdbQueue"
**/
You will have to add this tag shown below with JBoss-4.0
@jboss.ejb-local-ref ref-name=?ejb/SupplierLocal? jndi-name=?SupplierLocal?
No Change is required for chapter 9 as it uses Local interfaces of StoreAccessBean, which is being generated along with remote ones
Also this is how
ejb-jar.xml
looks like finally.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar >
<description>[CDATA[No Description.]]</description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<!-- Session Beans -->
<session >
<description>[CDATA[]]</description>
<ejb-name>StoreAccessState</ejb-name>
<home>au.com.tusc.sessionState.StoreAccessStateHome</home>
<remote>au.com.tusc.sessionState.StoreAccessState</remote>
<ejb-class>au.com.tusc.sessionState.StoreAccessStateSession</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<resource-ref >
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<res-type>javax.sql.Datasource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
<session >
<description>[CDATA[]]</description>
<ejb-name>StoreAccess</ejb-name>
<home>au.com.tusc.session.StoreAccessHome</home>
<remote>au.com.tusc.session.StoreAccess</remote>
<local-home>au.com.tusc.session.StoreAccessLocalHome</local-home>
<local>au.com.tusc.session.StoreAccessLocal</local>
<ejb-class>au.com.tusc.session.StoreAccessSession</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref >
<ejb-ref-name>ejb/CustomerLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.bmp.CustomerLocalHome</local-home>
<local>au.com.tusc.bmp.CustomerLocal</local>
<ejb-link>Customer</ejb-link>
</ejb-local-ref>
<ejb-local-ref >
<ejb-ref-name>ejb/ManagerLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.bmp.ManagerLocalHome</local-home>
<local>au.com.tusc.bmp.ManagerLocal</local>
<ejb-link>Manager</ejb-link>
</ejb-local-ref>
<ejb-local-ref >
<ejb-ref-name>ejb/ItemLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.cmp.ItemLocalHome</local-home>
<local>au.com.tusc.cmp.ItemLocal</local>
<ejb-link>Item</ejb-link>
</ejb-local-ref>
<ejb-local-ref >
<ejb-ref-name>ejb/SupplierLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.cmp.SupplierLocalHome</local-home>
<local>au.com.tusc.cmp.SupplierLocal</local>
<ejb-link>Supplier</ejb-link>
</ejb-local-ref>
<resource-ref >
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<res-type>javax.sql.Datasource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
<!--
To add session beans that you have deployment descriptor info for, add
a file to your XDoclet merge directory called session-beans.xml that contains
the <session></session> markup for those beans.
-->
<!-- Entity Beans -->
<entity >
<description>[CDATA[]]</description>
<ejb-name>Item</ejb-name>
<local-home>au.com.tusc.cmp.ItemLocalHome</local-home>
<local>au.com.tusc.cmp.ItemLocal</local>
<ejb-class>au.com.tusc.cmp.ItemCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>MyStoreItem</abstract-schema-name>
<cmp-field >
<description>[CDATA[Returns the itemID]]</description>
<field-name>itemID</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the supplierID]]</description>
<field-name>supplierID</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the description]]</description>
<field-name>description</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the quantity]]</description>
<field-name>quantity</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the price]]</description>
<field-name>price</field-name>
</cmp-field>
<primkey-field>itemID</primkey-field>
<query>
<query-method>
<method-name>findAll</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql>[CDATA[SELECT OBJECT(a) FROM MyStoreItem as a]]</ejb-ql>
</query>
<query>
<query-method>
<method-name>findSupplierID</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>[CDATA[SELECT OBJECT(b) FROM MyStoreItem b where b.supplierID = ?1]]</ejb-ql>
</query>
<query>
<query-method>
<method-name>findByOutOfStock</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql>[CDATA[SELECT OBJECT(c) FROM MyStoreItem c where c.quantity = 0]]</ejb-ql>
</query>
<!-- Write a file named ejb-finders-ItemBean.xml if you want to define extra finders. -->
</entity>
<entity >
<description>[CDATA[]]</description>
<ejb-name>Supplier</ejb-name>
<local-home>au.com.tusc.cmp.SupplierLocalHome</local-home>
<local>au.com.tusc.cmp.SupplierLocal</local>
<ejb-class>au.com.tusc.cmp.SupplierCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>MyStoreSupplier</abstract-schema-name>
<cmp-field >
<description>[CDATA[Returns the supplierID]]</description>
<field-name>supplierID</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the userID]]</description>
<field-name>userID</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the firstName]]</description>
<field-name>firstName</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the lastName]]</description>
<field-name>lastName</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the address]]</description>
<field-name>address</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the message]]</description>
<field-name>message</field-name>
</cmp-field>
<cmp-field >
<description>[CDATA[Returns the creditLimit]]</description>
<field-name>creditLimit</field-name>
</cmp-field>
<primkey-field>supplierID</primkey-field>
<query>
<query-method>
<method-name>findAll</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql>[CDATA[SELECT OBJECT(a) FROM MyStoreSupplier as a]]</ejb-ql>
</query>
<query>
<query-method>
<method-name>findUserID</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>[CDATA[SELECT Object(b) FROM MyStoreSupplier as b where b.userID = ?1]]</ejb-ql>
</query>
<!-- Write a file named ejb-finders-SupplierBean.xml if you want to define extra finders. -->
</entity>
<entity >
<description>[CDATA[]]</description>
<ejb-name>Manager</ejb-name>
<local-home>au.com.tusc.bmp.ManagerLocalHome</local-home>
<local>au.com.tusc.bmp.ManagerLocal</local>
<ejb-class>au.com.tusc.bmp.ManagerBMP</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>au.com.tusc.bmp.ManagerPK</prim-key-class>
<reentrant>False</reentrant>
<resource-ref >
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<res-type>javax.sql.Datasource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
<entity >
<description>[CDATA[]]</description>
<ejb-name>Customer</ejb-name>
<local-home>au.com.tusc.bmp.CustomerLocalHome</local-home>
<local>au.com.tusc.bmp.CustomerLocal</local>
<ejb-class>au.com.tusc.bmp.CustomerBMP</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>au.com.tusc.bmp.CustomerPK</prim-key-class>
<reentrant>False</reentrant>
<resource-ref >
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<res-type>javax.sql.Datasource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
<!--
To add entity beans that you have deployment descriptor info for, add
a file to your XDoclet merge directory called entity-beans.xml that contains
the <entity></entity> markup for those beans.
-->
<!-- Message Driven Beans -->
<message-driven >
<description>[CDATA[]]</description>
<ejb-name>RequestItems</ejb-name>
<ejb-class>au.com.tusc.mdb.RequestItemsBean</ejb-class>
<transaction-type>Bean</transaction-type>
<acknowledge-mode>Auto-acknowledge</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
<subscription-durability>NonDurable</subscription-durability>
</message-driven-destination>
<ejb-ref >
<ejb-ref-name>ejb/StoreAccess</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>au.com.tusc.session.StoreAccessHome</home>
<remote>au.com.tusc.session.StoreAccess</remote>
<ejb-link>StoreAccess</ejb-link>
</ejb-ref>
<ejb-local-ref >
<ejb-ref-name>ejb/SupplierLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.cmp.SupplierLocalHome</local-home>
<local>au.com.tusc.cmp.SupplierLocal</local>
<ejb-link>Supplier</ejb-link>
</ejb-local-ref>
</message-driven>
<message-driven >
<description>[CDATA[]]</description>
<ejb-name>DeliverItems</ejb-name>
<ejb-class>au.com.tusc.mdb.DeliverItemsBean</ejb-class>
<transaction-type>Bean</transaction-type>
<acknowledge-mode>Auto-acknowledge</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
<subscription-durability>NonDurable</subscription-durability>
</message-driven-destination>
<ejb-ref >
<ejb-ref-name>ejb/StoreAccess</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>au.com.tusc.session.StoreAccessHome</home>
<remote>au.com.tusc.session.StoreAccess</remote>
<ejb-link>StoreAccess</ejb-link>
</ejb-ref>
<ejb-local-ref >
<ejb-ref-name>ejb/ItemLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>au.com.tusc.cmp.ItemLocalHome</local-home>
<local>au.com.tusc.cmp.ItemLocal</local>
<ejb-link>Item</ejb-link>
</ejb-local-ref>
</message-driven>
</enterprise-beans>
<!-- Relationships -->
<!-- Assembly Descriptor -->
<assembly-descriptor >
<!-- finder transactions -->
</assembly-descriptor>
</ejb-jar>
And finally
jboss.xml
looks like this
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
<jboss>
<unauthenticated-principal>nobody</unauthenticated-principal>
<enterprise-beans>
<!--
To add beans that you have deployment descriptor info for, add
a file to your XDoclet merge directory called jboss-beans.xml that contains
the <session></session>, <entity></entity> and <message-driven></message-driven>
markup for those beans.
-->
<entity>
<ejb-name>Item</ejb-name>
<local-jndi-name>ItemLocal</local-jndi-name>
</entity>
<entity>
<ejb-name>Supplier</ejb-name>
<local-jndi-name>SupplierLocal</local-jndi-name>
</entity>
<entity>
<ejb-name>Manager</ejb-name>
<local-jndi-name>ManagerLocal</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<jndi-name>java:/DefaultDS</jndi-name>
</resource-ref>
</entity>
<entity>
<ejb-name>Customer</ejb-name>
<local-jndi-name>CustomerLocal</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<jndi-name>java:/DefaultDS</jndi-name>
</resource-ref>
</entity>
<session>
<ejb-name>StoreAccessState</ejb-name>
<jndi-name>StoreAccessStateBean</jndi-name>
<local-jndi-name>StoreAccessStateLocal</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<jndi-name>java:/DefaultDS</jndi-name>
</resource-ref>
</session>
<session>
<ejb-name>StoreAccess</ejb-name>
<jndi-name>StoreAccessBean</jndi-name>
<local-jndi-name>StoreAccessLocal</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<jndi-name>java:/DefaultDS</jndi-name>
</resource-ref>
</session>
<message-driven>
<ejb-name>RequestItems</ejb-name>
<destination-jndi-name>queue/MdbQueue</destination-jndi-name>
<ejb-ref>
<ejb-ref-name>ejb/StoreAccess</ejb-ref-name>
<jndi-name>StoreAccessBean</jndi-name>
</ejb-ref>
</message-driven>
<message-driven>
<ejb-name>DeliverItems</ejb-name>
<destination-jndi-name>queue/DelMdbQueue</destination-jndi-name>
<ejb-ref>
<ejb-ref-name>ejb/StoreAccess</ejb-ref-name>
<jndi-name>StoreAccessBean</jndi-name>
</ejb-ref>
</message-driven>
</enterprise-beans>
<resource-managers>
</resource-managers>
</jboss>
And this how JNDIView looks like after deploying the MyStoreMgr.jar
Some bits has been removed in this snippet.
java:comp namespace of the StoreAccess bean:
+- env (class: org.jnp.interfaces.NamingContext)
| +- jdbc (class: org.jnp.interfaces.NamingContext)
| | +- DefaultDS[link -> java:/DefaultDS] (class: javax.naming.LinkRef)
| +- ejb (class: org.jnp.interfaces.NamingContext)
| | +- SupplierLocal[link -> SupplierLocal] (class: javax.naming.LinkRef)
| | +- CustomerLocal[link -> CustomerLocal] (class: javax.naming.LinkRef)
| | +- ManagerLocal[link -> ManagerLocal] (class: javax.naming.LinkRef)
| | +- ItemLocal[link -> ItemLocal] (class: javax.naming.LinkRef)
java:comp namespace of the RequestItems bean:
+- UserTransaction (class: javax.transaction.UserTransaction)
+- env (class: org.jnp.interfaces.NamingContext)
| +- ejb (class: org.jnp.interfaces.NamingContext)
| | +- SupplierLocal[link -> SupplierLocal] (class: javax.naming.LinkRef)
| | +- StoreAccess[link -> StoreAccessBean] (class: javax.naming.LinkRef)
Global JNDI Namespace
org.jboss.mq.SpyXAConnectionFactory)
+- queue (class: org.jnp.interfaces.NamingContext)
| +- D (class: org.jboss.mq.SpyQueue)
| +- C (class: org.jboss.mq.SpyQueue)
| +- B (class: org.jboss.mq.SpyQueue)
| +- A (class: org.jboss.mq.SpyQueue)
| +- DelMdbQueue (class: org.jboss.mq.SpyQueue)
| +- testQueue (class: org.jboss.mq.SpyQueue)
| +- ex (class: org.jboss.mq.SpyQueue)
| +- DLQ (class: org.jboss.mq.SpyQueue)
| +- MdbQueue (class: org.jboss.mq.SpyQueue)
+- StoreAccessLocal (proxy: $Proxy222 implements interface au.com.tusc.session.StoreAccessLocalHome)
+- ItemLocal (proxy: $Proxy218 implements interface au.com.tusc.cmp.ItemLocalHome)
+- RMIConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
+- SupplierLocal (proxy: $Proxy219 implements interface au.com.tusc.cmp.SupplierLocalHome)
org.jboss.mq.SpyXAConnectionFactory)
+- topic (class: org.jnp.interfaces.NamingContext)
| +- testDurableTopic (class: org.jboss.mq.SpyTopic)
| +- testTopic (class: org.jboss.mq.SpyTopic)
| +- securedTopic (class: org.jboss.mq.SpyTopic)
+- StoreAccessStateBean (proxy: $Proxy223 implements interface au.com.tusc.sessionState.StoreAccessStateHome,interface javax.ejb.Handle)
+- ManagerLocal (proxy: $Proxy220 implements interface au.com.tusc.bmp.ManagerLocalHome)
+- ejb (class: org.jnp.interfaces.NamingContext)
| +- mgmt (class: org.jnp.interfaces.NamingContext)
| | +- MEJB (proxy: $Proxy42 implements interface javax.management.j2ee.ManagementHome,interface javax.ejb.Handle)
+- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
+- HTTPConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
+- CustomerLocal (proxy: $Proxy221 implements interface au.com.tusc.bmp.CustomerLocalHome)
+- RMIXAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
+- OIL2XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
+- HASessionState (class: org.jnp.interfaces.NamingContext)
| +- Default (class: org.jboss.ha.hasessionstate.server.HASessionStateImpl)
+- UIL2XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
+- invokers (class: org.jnp.interfaces.NamingContext)
| +- localhost.localdomain (class: +- StoreAccessBean (proxy: $Proxy224 implements interface au.com.tusc.session.StoreAccessHome,interface javax.ejb.Handle)
+- UILConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
+- jetty (class: org.jnp.interfaces.NamingContext)
| +- CMPState (proxy: $Proxy39 implements interface org.mortbay.j2ee.session.interfaces.CMPStateHome,interface javax.ejb.Handle)
+- jmx (class: org.jnp.interfaces.NamingContext)
| +- invoker (class: org.jnp.interfaces.NamingContext)
| | +- RMIAdaptor (proxy: $Proxy31 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor)
| +- rmi (class: org.jnp.interfaces.NamingContext)
| | +- RMIAdaptor (class: