Chapter 16. JNDI, the 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 is implemented by JNDI and is an object store 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 previous chapters, we started to talk a little bit about the ENC, showing how you can use annotations such as @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 show you how you can populate the ENC and use it as your own JNDI registry, and we show you how you can use it to inject environment references into your bean fields.

Global JNDI

While previous versions of the EJB Specification left it up to the vendor to decide exactly how clients were to look up session bean proxies, the 3.1 revision in Chapter 4.4 introduces a portable syntax required of all container providers. No matter which vendor’s implementation you choose, SLSBs and SFSBs views must be available in Global JNDI under this syntax:

java:global[/app-name]/module-name/bean-name [!FQN]

In this arrangement, app-name refers to the name of the application (or EAR; this is optional), ...

Get Enterprise JavaBeans 3.1, 6th 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.