12/16/2009

Portable JNDI names in EJB 3.1

Java EE 6 made some efforts to standardize JNDI names at global,application, and module levels. Now EJB deployed to EJB-3.1-capable server will have various standard JNDI names registered. EJB 3.1 spec defines the following 3 levels of JNDI names for EJB:

Global JNDI name:

java:global[/<app-name>]/<module-name>/<bean-name>[!<fully-quali-fied-interface-name>]
Application-scope JNDI name:
java:app/<module-name>/<bean-name>[!<fully-qualified-interface-name>]
Module-scope JNDI name:
java:module/<bean-name>[!<fully-qualified-interface-name>]
The following exampels shows various EJB JNDI names, depending upon how the EJB is packaged, its business interface(s), and bean class:

Bean class: test.TestBean
business interface: none






















How the EJB is packaged

Global JNDI names


Application-scope JND names

Module-scope JNDI names

in testEJB.jar inside testApp.ear

java:global/testApp/testEJB/TestBean

java:global/testApp/testEJB/TestBean!test.TestBean


java:app/testEJB/TestBean

java:app/testEJB/TestBean!test.TestBean



java:module/TestBean


java:module/TestBean!test.TestBean


in testWeb.war



java:global/testWeb/TestBean

java:global/testWeb/TestBean!test.TestBean


java:app/testWeb/TestBean

java:app/testWeb/TestBean!test.TestBean


java:module/TestBean


java:module/TestBean!test.TestBean



in testEJB.jar



java:global/testEJB/TestBean

java:global/testEJB/TestBean!test.TestBean



java:app/testEJB/TestBean

java:app/testEJB/TestBean!test.TestBean



java:module/TestBean


java:module/TestBean!test.TestBean


No comments: