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

Reply via email to