Chapter 14. The JNDI ENC and Injection

Every EJB container that is deployed in an application server has its own personal internal registry called the Enterprise Naming Context (ENC). This ENC is implemented by JNDI and is a sandbox where the EJB container can hold specific references to its environment. Think of it as the EJB container’s personal address book, where it writes down addresses to various Java EE services that it wants to look up and use within its business logic.

In Chapter 11, we started to talk a little bit about the ENC, showing how you can use annotations like @javax.annotation.EJB and @javax.annotation.Resource to inject references to Java EE services directly into the fields of your bean. This injection process is driven by the EJB container’s ENC. In this chapter, we’ll show you how you can populate the ENC and use it as your own JNDI registry, and we’ll show you how you can use it to inject environment references into your bean fields.

The JNDI ENC

The ENC has been around in the EJB specification since the early 1.0 days. It began as a local JNDI namespace that was specific to an EJB container. Developers could define aliases to resources, EJBs, and environment entries in the JNDI ENC through EJB XML deployment descriptors. These aliases could then be looked up directly in JNDI within business logic. In EJB 3.0, this mechanism was enhanced so that JNDI ENC references could be injected directly into the fields of a bean class. Annotations are the primary mechanism ...

Get Enterprise JavaBeans 3.0, 5th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.