Jee5 makes extensive use of Global JNDI for references.
Specifically, the following use Global JNDI:
@Resource.mappedName()
This mapped name is often a global JNDI name, but may be a name of
any form.
@EJB.mappedName()
This mapped name is often a global JNDI name, but may be a name of
any form.
@MessageDriven.mappedName()
A product specific name(e.g. global JNDI name of a queue) that this
message-driven bean should be mapped to.
@WebServiceRef.mappedName()
This mapped name is often a global JNDI name, but may be a name of
any form.
<persistence-unit><jta-data-source>
<persistence-unit><non-jta-data-source>
InJavaEEenvironments,thejta-data-sourceandnon-jta-data-
sourceelementsareused
tospecifytheglobal JNDInameoftheJTAand/ornon-
JTAdatasourcetobeusedbythepersistence
provider.
The spec makes it clear that Global JNDI is not required to satisfy
these values, and that the meaning of these fields is completely
vendor specific. In the case of mapped name, the application server
can completely ignore the field.
The problem is our users' applications will make use of mapped name
in other application servers, and since every application server that
I know if is implementing these with Global JNDI, it becomes a
defacto standard and requirement for Jee5. Moreover, I believe that
our GlobalJNDI names must be simple normal names (i.e, not encoded
abstract names) you would see in other application servers, because
users will annotate their code with the mapped names, effectively
locking in the Global JNDI names that they expect to work in our
application server.
So do you agree that Global JNDI is the defacto required
implementation for these and other similar entries?
-dain