EJB 2.1/3.0 References
3.0 EJBs may reference 2.x EJBs and vice versa. This tutorial demonstrates mechanisms for such references. To start, take a look at the 3.0 SLSB
Stateless3Bean.java, the 2.x SLSB
Stateless2Bean.java and the deployment descriptors for the 2.x SLSB
ejb-jar2.xml and jboss2.xml.
EJB3.0 Reference to EJB2.x
Two mechanisms for referencing 2.x EJBs from a 3.0 EJB are demonstrated. The first mechanism uses annotations exclusively. Note the @EJBs annotation. The
name parameter specifies the binding for the 2.x EJB in the local JNDI environment. The mapped-name parameter specifies the global JNDI binding of
the 2.1 EJB. Note the JNDI lookup in the testAccess() method which uses the local binding of the 2.x EJB.
The second mechanism demonstrates injection and the use of EJB3.0 deployment descriptors to augment the annotations. Take a look at
ejb-jar3.xml. The ejb-ref establishes the ejb/Stateless2 reference. Now take a look at jboss3.xml. The
ejb-ref sets the jndi-name for the reference. This reference is used to inject the 2.x EJB using the @EJB(name="ejb/Stateless2") annotation.
EJB2.x Reference to EJB3.0
Take another look at ejb-jar2.xml. The ejb-ref element references the 3.0 EJB with the ejb/Stateless3 name. Take another
look at jboss2.xml. The Stateless3 global JNDI binding is set in the reference. This reference is used in the 2.x EJB to lookup
the 3.0 EJB in the local JNDI environment.
Note the differences in the root path of the local JNDI environment between EJB3.0 and EJB2.x.
Building and Running
To build and run the example, make sure you have ejb3.deployer installed in JBoss 4.0.x and have JBoss running. See the reference manual
on how to install EJB 3.0. Start JBoss prior to running the tutorial. Building the tutorial will deploy two JAR files, one for the 3.0 EJB and one for the
2.x EJB.
Unix: $ export JBOSS_HOME=<where your jboss 4.0 distribution is>
Windows: $ set JBOSS_HOME=<where your jboss 4.0 distribution is>
$ ant
$ ant run
run:
[java] Testing EJB3.0 references to EJB2.x
[java] Testing EJB2.x references to EJB3.0
[java] Succeeded