In EJB 3.1 JNDI Lookups can be made with different Lookup-Names:
java:global[/<app-name>]/<module-name>/<bean-name>!<fully-qualifiedbean interface-name>
java:global[/<app-name>]/<module-name>/<bean-name>
java:app/<module-name>/<bean-name>!<fully-qualified-bean-interface-name>
java:app/<module-name>/<bean-name>
java:module/<bean-name>!<fully-qualified-bean-interface-name>
java:module/<bean-name>
In my JavaEE 6 Project (with Maven 2, Netbeans 6 and Glassfish v3) the Application name is X-Snapshot.ear and the EJB-Module is Y-Snapshot.jar. How can i config this maven project to use another application and module name? I don't wnat to change all JNDI Lookups when this names change!! So is it possible to config application and module names for JNDI LookUps?
The Maven EAR Plugin allows to Customize A Module Filename and you can set the final name or the EAR using project.build.finalName
.
Override the <application-name>
and the <module-name>
in the application.xml
and the ejb-jar.xml
respectively. Quoting Portable Global JNDI name in EJB 3.1:
In addition to the above name, if the EJB exposes just a single client view (that is it implements just one interface or the no interface view), the container is also mandated to map the bean to
java:global/[<application-name>]/<module-name>/<bean-name>
Where
<aplication-name>
defaults to the bundle name (.ear
file name) without the bundle extension. This can be overridden inapplication.xml
. Also,<application-name>
is applicable only if the bean is packaged inside a.ear
file.<module-name>
defaults to bundle name (.war
or.jar
) without the bundle extension. Again, this can be overridden inejb-jar.xml
.<bean-name>
defaults to the unqualified class name of the bean. However, if@Stateful
or@Stateless
or@Singleton
uses the name attribute, then the value specified there will be used as the bean name.