0% found this document useful (0 votes)
65 views18 pages

Dependency Injection in EJB 3 - DZone Refcardz

This document provides an overview of dependency injection in Enterprise JavaBeans (EJB) 3. It describes how EJB 3 simplifies development through a POJO programming model and annotation-based configuration. It explains how dependency injection allows EJB components to declare dependencies that the container will inject, such as data sources, EJBs, and web services. The document outlines the different types of resources and services that can be injected using annotations or XML descriptors.

Uploaded by

afst
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views18 pages

Dependency Injection in EJB 3 - DZone Refcardz

This document provides an overview of dependency injection in Enterprise JavaBeans (EJB) 3. It describes how EJB 3 simplifies development through a POJO programming model and annotation-based configuration. It explains how dependency injection allows EJB components to declare dependencies that the container will inject, such as data sources, EJBs, and web services. The document outlines the different types of resources and services that can be injected using annotations or XML descriptors.

Uploaded by

afst
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz


DZone
>
Refcardz
>
Dependency Injection in EJB 3

Refcard #006

Dependency Injection in EJB 3


Empowering Enterprise Java Developers
Shows you Enterprise JavaBeans, a component model/framework that lets you build
enterprise Java applications.

Written By

Debu Panda
Director, Product Management, Oracle

https://dzone.com/asset/download/10 1/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

Table of Contents


What is EJB 3?


Dependency Injection in EJB 3


Resource Injection


Injection of Session EJB References


Injecting JPA Resources


Injecting Web Service References


Injecting Spring Beans in EJB 3

Section 1

What is EJB 3?
Enterprise JavaBeans (EJB) is a platform for building portable, reusable, and scalable
business applications using the Java programming language. Since its initial
incarnation, EJB has been touted as a component model or framework that lets you
build enterprise Java applications without having to reinvent services such as
transactions, security, and automated persistence for building an application.

EJB 3 greatly simplifies development by adopting a POJO programming model. As


shown in the following figure an annotation transforms a simple POJO to an EJB.

EJB 3 not only simplifies development of session and message driven beans but it
also radically simplifies the persistence model by implementing a simplified Object-
Relational Mapping approach similar to Oracle TopLink and JBoss Hibernate as a part
of the Java Persistence API. Note that JPA replaces EJB 2 CMP Entity beans in the EJB 3
spec, while being available outside of the Java EE container.

https://dzone.com/asset/download/10 2/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

Following is an example of a simple EJB 3 Stateless session bean.

1 import javax.ejb.Stateless;
2 import ejb3inaction.example.persistence.Bid;
3 @Stateless
4 public class PlaceBidBean implements PlaceBid {
5 ...
6 public PlaceBidBean() {}
7 public Bid addBid(Bid bid) {
8 System.out.println("Adding bid, bidder ID="
9 +
0 bid.getBidderID()
1 + ", item ID=" + bid.getItemID()
2 + ", bid amount="
3 + bid.getBidAmount() + ".");
4 r
5 eturn save(bid);
6 }
7 ...
8 }
9 import javax.ejb.Local;
0 import ejb3inaction.example.persistence.Bid;
1 @Local public interface PlaceBid {
2 Bid addBid(Bid bid);
3 }
4

Section 2

Dependency Injection in EJB 3


With EJB 3, dependency injection has greatly simplified accessing both EJB
resources"such as JDBC DataSource, JMS Objects, and JPA Entity Manager"and
services"such as Timer, User Transaction, and Web Services. You will find this Refcard
useful when building enterprise Java applications with EJB 3 and JPA. It lists all
metadata annotations, describes them and provides examples. It also provides
descriptions for XML elements that you can use for injection.

Most enterprise Java applications use external resources and services such as Data
Source, EJB, or web services. EJB 3 makes using resources and services simpler by
implementing dependency injection.

Dependency injection allows you to simply declare component dependencies and let
the EJB container deal with the complexities of instantiating, initializing, and
sequencing resources and supplying service or resource references to clients as

https://dzone.com/asset/download/10 3/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

required. Development frameworks like Spring framework originally popularized


dependency injection.

In EJB 3, you may think of dependency injection as the inverse of JNDI. It is the
responsibility of the container to inject an object based on the dependency
declaration. The figure below compares dependency injection with JNDI.

Note that annotations and descriptors are not mutually exclusive. In fact, you can use
both together. Deployment descriptor entries override configuration values specified
using metadata annotations.

You can use either metadata annotations or XML descriptors to use dependency
injection.

Refer to the following Java EE 5 specifications and XML schema for more information
on dependency injection.

JSR 220
Enterprise JavaBeans 3.0:

http://www.jcp.org/en/jsr/detail?id=220

JSR 224
Java API for XML-Based Web Services (JAX-WS) 2.0:

http://jcp.org/en/jsr/detail?id=224

JSR 250:
https://dzone.com/asset/download/10 4/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

Common Annotations for the Java Platform:

http://jcp.org/en/jsr/detail?id=224

Schema for EJB 3 deployment descriptor:

http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd

Schema that defines common schema components:

http://java.sun.com/xml/ns/javaee/javaee_5.xsd

Dependency injection is supported only on managed classes and not on regular POJO.

Dependency injection is supported only on managed classes such as Session Beans or


Interceptors and not on regular POJO. Hence you cannot use injection on helper
classes.

The following table depicts what type of managed classes can inject what objects.

RESOURCES STATELESS STATEFUL MDB INTERCEPTORS

JDBC DataSource Yes Yes Yes Yes

JMS Destinations, Connection


Yes Yes Yes Yes
Factories

Mail Resources Yes Yes Yes Yes

UserTransaction Yes Yes Yes Yes

Environment Entries Yes Yes Yes Yes

EJBContext Yes Yes Yes No

Timer Service Yes No Yes No

Web Service reference Yes Yes Yes Yes

EntityManager,
Yes Yes Yes Yes
EntityManagerFactory

Java EE 5 introduced several metadata annotations as part of JSR 250. Although


primarily geared toward EJB, these annotations also apply to Java EE components
such as Servlets, JSF managed beans, and application clients.

https://dzone.com/asset/download/10 5/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

The following annotations can be used in a field or a setter method for dependency
injection. However, these annotations may also be applied at the class level for
defining dependencies and then used with JNDI look up.

COMPONENTS
ANNOTATIONS USAGE
THAT CAN USE

Dependency injection of resources such EJB, Web,


javax.annotation.Resource
as DataSource, and JMS objects Application Client

EJB, Web,
javax.ejb.EJB Dependency injection of Session beans
Application Client

EJB, Web,
javax.xml.ws.WebServiceRef Dependency injection of Web services
Application Client

Dependency injection of container-


javax.persistence.PersistenceContext EJB, Web
managed EntityManager

Dependency injection of
javax.persistence.PersistenceUnit EJB, Web
EntityManagerFactory

Section 3

Resource Injection
javax.annotation.Resource
The @Resource annotation is used to inject any of the following: JDBC data sources,
JMS connection factories, JMS destinations, mail resource, environment entries, timer
service, UserTransaction, and EJBContext.

The following table shows attributes for the @Resource annotation.

PARAMETER TYPE DESCRIPTION DEFAULT

The type of authentication required for accessing


enum
the resource. The CONTAINER value means that
Authentication
authentication the container"s security context is used for the
Type CONTAINER
Type resource. The APPLICATION value means that
{CONTAINER,
authentication for the resource must be provided
APPLICATION}
by the application.

The referred resources is bound under this name


name String in the enviornment-naming context as ""
java:comp/env/<Name>

Type of the resource being referenced. Example:


type Object Object.class
javax.sql.DataSource

shareable Boolean Specifies whether the resource can be shared. True


https://dzone.com/asset/download/10 6/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

PARAMETER TYPE DESCRIPTION DEFAULT

description String The description of the resource. ""

A vendor-specific name that the resource may be


mappedName String ""
mapped to, as opposed to the JNDI name.

You can inject a resource at the field or setter method level.

The following example shows data source injection at the field level:

1 @Resource(name="jdbc/ActionBazaarDS")
2 private DataSource dataSource;
3

The following code shows data source injection at the setter method level:

1 private DataSource dataSource;


2 @Resource(name="jdbc/ActionBazaarDB")
3 public void setDataSource(DataSource dataSource) {
4 this.dataSource = dataSource;
5 }
6

Although setter injection might seem like a little more work, it provides a couple of
distinct advantages. First, it is easier to unit-test by invoking the public setter method
from a testing framework like JUnit. Second, it is easier to put initialization code in the
setter if you need it.

EJB 3 allows you to explicitly specify a global JNDI name using the mappedName
parameter of the @Resource annotation. For example, if you"re using the Oracle
Application Server and you have a data source with a global JNDI name of
jdbc/OracleDS, you can specify the resource mapping as follows:

1 @Resource(name="jdbc/ActionBazaarDS", mappedName="jdbc/ OracleDS")


2 private javax.jdbc.DataSource myDB;
3

XML Elements to Define Resource Injection


If you are using deployment descriptor (ejb-jar.xml) instead of annotations, then you
must use resource-ref, resource-env-ref or env-entry XML elements to define
dependencies.
https://dzone.com/asset/download/10 7/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

resource-ref
The resource-ref is used to specify resource references. Example: data source and JMS
connection factories.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced resource into the ENC. Same as the
res-ref-name
name element in the @Resource annotation.

mapped-name A vendor-specific global JNDI name for the referenced resource.

Fully qualified class of the type of resource referenced. Example:


res-type
javax.sql.DataSource.

Authentication type for the resource. Valid values are Container or


res-auth
Application.

Specifies whether multiple beans can share the resource. Valid values are
res-sharing-scope
Shareable and Unshareable

Target where the referenced resource is injected when dependency


injection-target
injection is used.

1 <resource-ref>
2 <res-ref-name>jdbc/ActionBazaarDS</res-ref-name>
3 <res-type>javax.sql.DataSource</res-type>
4 <res-auth>Container</res-auth>
5 <res-sharing-scope>Shareable</res-sharing-scope>
6 <injection-target>
7 <injection-tar
8 get-class>
9 actionbazaar.buslogic.BidManagerBean</injection-target-class>
0 <injection-tar
1 get-name>dataSource</injection-target-name>
2 </injection-target>
3 </resource-ref>
4

resource-env-ref
The resource-env-ref is used to specify references to JMS destination resources such
as a Queue or Topic.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced JMS destination to the ENC. Same as
resource-env-ref-name
the name element in the @Resource annotation.

mapped-name A vendor-specific global JNDI name for the referenced JMS destination.

https://dzone.com/asset/download/10 8/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

Type of JMS destination referenced, such as javax.jms.Queue or


resource-env-type
javax.jms.Topic.

Target where the referenced destination is injected when dependency


injection-target
injection is used.

1 <resource-env-ref>
2 <resource-env-ref-name>jms/OrderBillingQueue</resource-env-ref-name>
3 <resource-env-ref-type>
4 javax.jms.Destination
5 </resource-env-ref-type>
6 <injection-target>
7 <injection-target-class>
8 ejb3inaction.example.buslogic.PlaceOrderBean
9 </injection-target-class>
0 <injection-tar
1 get-name>billingQueue</injection-target-name>
2 </injection-target>
3 </resource-env-ref>
4

env-entry
The env-entry defines environment entries for an EJB.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used in the environment entry in the ENC. Same as the name
env-entry-name
element in the @Resource annotation.

Type of the env entry used. Legal types are java.lang.Boolean,


env-entry-type java.lang.Byte, java.lang.Character, java.lang.String, java.lang.Short,
java.lang.Integer, java.lang.Long, java.lang.Float, and java.lang.Double.

env-entry-value Value specified for the environment entry.

Target where the referenced destination is injected when dependency


injection-target
injection is used.

The injection-target defines the name of a class and a name (field or property) within
that class into which a resource, EJB, or entity manager should be injected as we saw
in the above examples.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The fully qualified name of the class into which a resource, EJB, or entity
injection-target-class
manager should be injected.

https://dzone.com/asset/download/10 9/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

Name of the injection target, i.e., the name of the property or field in the
injection-target-name
injection target class.

Section 4

Injection of Session EJB References


Like resource injection, you can inject Session bean references into another EJB or
other managed class using annotations or deployment XML. If you prefer annotations
you can use @javax.ejb.EJB annotations to inject either remote or local EJB references.
Using deployment XML, you can inject remote EJB references with ejb-ref and local
EJB references with ejb-local-ref.

@javax.ejb.EJB
Injects a session bean reference into a field or method.

PARAMETER TYPE DESCRIPTION DEFAULT

name String The name used to bind the referenced EJB to the ENC. ""

beanInterface Class The bean interface used to access the EJB Object.class

Type of the resource being referenced. Example:


mappedName String ""
javax.sql.DataSource

beanName String Specifies whether the resource can be shared. ""

description String    

1 @EJB(name="BidManagerRemote")
2 private BidManager bidManager;
3

You must not inject a Stateful session bean into a stateless object, such as a stateless
session bean or servlet that may be shared by multiple concurrent clients (you should
use JNDI in such cases instead). However, injecting an instance of a stateless session
bean into a stateful session bean is perfectly legal.

ejb-local-ref
Used to specify a dependency on the local interface of a session bean.
https://dzone.com/asset/download/10 10/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced EJB to the ENC. Same as the name
ejb-ref-name
element in the @EJB annotation. ejb-ref-name must be specified.

The name of the target enterprise bean. This optional setting is used to link
ejb-link
an EJB reference to a target enterprise bean.

local The EJB 3 local business interface.

ref-type The EJB reference type, i.e. "session".

Target where the EJB reference is injected when dependency injection is


injection-target
used.

ejb-ref
Used to specify a dependency on the remote interface of a session bean.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced EJB to the ENC. Same as the name
ejb-ref-name
element in the @EJB annotation. ejb-ref-name must be specified.

The name of the target enterprise bean. This optional setting is used to link
ejb-link
an EJB reference to a target enterprise bean.

remote The EJB 3 remote business interface type.

ref-type The EJB reference type, i.e. "session".

Target where the EJB reference is injected when dependency injection is


injection-target
used.

EJB 3 specification does not require injecting references of remote EJB into a different
instance of container. For example if you have an EJB with a remote interface
deployed into an instance of a container, EJB 3 specification does not require injecting
instance of that EJB into another EJB deployed in another container.

Section 5

Injecting JPA Resources


The JPA EntityManager is the bridge between the OO and relational worlds as
depicted in the following figure.

https://dzone.com/asset/download/10 11/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

JPA supports two types of EntityManager: container-managed and application-


managed. As the name suggests the lifecycle of the container manages container-
managed EntityManager whereas the lifecycle (creation, destruction) is performed by
application. An application-managed EntityManager is created from an
EntityManagerFactory.

Injecting Container-Managed EntityManager


You can inject a container-managed EntityManager (either transaction scoped or
extended) using @javax.persistence.PersistenceContext annotation.

@javax.persistence.PersistenceContext
The following table defines the parameters/attributes of this annotation.

PARAMETER TYPE DESCRIPTION DEFAULT

The name used to bind the referenced persistence


name String ""
context to the ENC

unitName String Name of the persistence unit referenced ""

Type of persistence context, i.e., Transaction or


Persistence
type Extended. Extended is supported only in stateful TRANSACTION
ContextType
session beans.

Persistence A name value-pair of vendor-specific persistence


properties {}
Property[] properties

You can inject a transaction scoped EntityManager as follows:

1 @PersistenceContext(unitName="actionBazaar")
2 private EntityManager entityManager;
3

An extended scoped EntityManager can only used in a stateful session bean as in the
following example:

1 @Stateful
2 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
3 public class PlaceOrderBean implements PlaceOrder {
4 @PersistenceContext(unitName = "actionBazaar", type =
5 PersistenceContextType.EXTENDED)

https://dzone.com/asset/download/10 12/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

6 EntityManager em;
7

The persistence-context-ref is similar to @PersistenceContext; it defines references to


a container-managed entity manager.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

persistence-context-ref- The name used to bind the referenced persistence context to the ENC.
name Same as the name element in the @PersistenceContext annotation.

persistence-unit-name Name of the persistence unit referenced.

Type of persistence context, i.e., Transaction or Extended. Extended is


persistence-context-type
supported only in stateful session beans.

persistence-property A name value-pair of vendor-specific persistence properties.

Target where the EntityManager is injected when dependency injection is


injection-target
used.

1 <persistence-context-ref>
2 <persistence-conte
3 xt-ref-name>
4 A
5 ctionBazaar
6 </persistence-conte
7 xt-ref-name>
8 <persistence-unit-name>actionBazaar</persistence-unit-name>
9 <persistence-conte
0 xt-type>Transaction</persistence-context-type>
1 <injection-tar
2 get>
3 <injection-target-class>
4 ejb3inaction.example.buslogic.PlaceBidBean
5 </injection-target-class>
6 <injection-target-name>em</injection-target-name>
7 </injection-tar
8 get>
9 </persistence-context-ref>
0

Injecting EntityManagerFactory
@javax.persistence.PersistenceUnit
1 @Stateless
2 public class ItemManagerBean implements ItemManager {
3 @PersistenceUnit
4 private EntityManagerFactory entityManagerFactory;
5 private EntityManager entityManager;
6 @PostConstruct
https://dzone.com/asset/download/10 13/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

7 public void initialize() {


8 entityManager = entityManagerFactory.createEntityManager();
9 }
0 }
1

PARAMETER TYPE DESCRIPTION DEFAULT

The name used to bind the referenced persistence context to


name String ""
the ENC

unitName String Name of the persistence unit ""

The persistence-unit-ref is similar to @PersistenceUnit that is used to define


references to a persistence unit (i.e., entity manager factory).

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced persistence unit


persistence-unit-ref-name (EntityManagerFactory) to the ENC. Same as the name element in the
@PersistenceUnit annotation.

persistence-unit-name Name of the persistence unit referenced.

Target where the EntityManagerFactory is injected when dependency


injection-target
injection is used.

Section 6

Injecting Web Service References


@javax.xml.ws.WebServiceRef
ELEMENT DESCRIPTION

name The JNDI name for the web service.

The WSDL location for the service. If not specified, then it is derived from the referenced
wsdlLocation
service class.

type The Java type of the resource.

value The service class, always a type extending javax.xml.ws.Service.

mappedName Vendor-specific global JNDI name for the service.

You can inject an endpoint interface as follows:

1 @WebServiceRef(TrackDeliveryService.class)
2 private TrackDeliverySEI deliveryService;
3

https://dzone.com/asset/download/10 14/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

You can inject a service interface as follows:

1 @WebServiceRef
2 private TrackingService service;
3

service-ref
The service-ref XML element is used to specify dependency on a web service if you
are using deployment descriptor. The following table contains only the elements that
are used from EJB clients.

ELEMENT/ATTRIBUTE
DESCRIPTION
NAME

The name used to bind the referenced web service into the ENC. Same as
service-ref-name
the name element in the @WebServiceRef annotation.

Fully qualified class for the JAX-WS service interface the client depends
service-interface
on., i.e. javax.xml.rpc.Service.

service-ref-type Type of service that will be returned.

wsdl-file The URL location of the WSDL.

handler-chains Defines handler chain.

Target where the web service reference is injected when dependency


injection-target
injection is used.

The detailed schema for the service-ref can be found online at


java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd.

Section 7

Injecting Spring Beans in EJB 3


The Spring Framework is one of the driving forces behind popularizing the POJO
programming model and dependency injection. In this section we will examine how
you can inject and use Spring POJOs into EJB 3 Session beans or Message Driven
Beans.

The Spring framework provides factory classes based on the following abstract
classes that you use to develop Spring-enabled EJBs.

SUPPORT CLASS PURPOSE

AbstractStatelessSessionBean Used for Spring-enabled stateless session beans.

https://dzone.com/asset/download/10 15/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

SUPPORT CLASS PURPOSE

AbstractStatefulSessionBean Used for Spring-enabled stateful session beans.

AbstractJMSMessageDrivenBean Used for Spring-enabled JMS message-driven beans.

AbstractMessageDrivenBean Used for Spring-enabled connector-based MDBs.

To use a Spring factory class to access a Spring bean, your EJB 3 bean class must
implement the onEjbCreate() method.

Below is the PlaceBidBean EJB 3 example transformed into a Spring-enabled stateless


session bean. Here the PlaceBidBean acts as a fa"ade and delegates the actual business
logic to the PlaceBidServiceBean. The PlaceBidServiceBean is a Spring POJO that may
use the full power of the Spring framework.

1 @Stateless(name = "PlaceBid")
2 public class PlaceBidBean extends AbstractStatelessSessionBean
3 implements PlaceBid {
4 private BidServiceBean bidService;
5 public PlaceBidBean() {
6 }
7 protected void onEjbCreate() {
8 bidService =
9 (BidServiceBean) getBeanFactory().getBean("bidService");
0 }
1 public Long addBid(String userId, Long itemId, Double bidPrice) {
2 return bidService.addBid(userId, itemId, bidPrice);
3 }
4

When an EJB instance is created (when a client invokes an EJB), the onEjbCreate
method is invoked automatically. A JNDI lookup is performed to obtain the path for
the bean factory by using an environment entry named ejb/BeanFactoryPath. So you
have to define it in the EJB deployment descriptor for the EJB:

1 <session>
2 <display-name>PlaceBid</display-name>
3 <ejb-name>PlaceBid</ejb-name>
4 <env-entry>
5 <env-entry-name>ejb/BeanFactoryPath</env-entry-name>
6 <env-entry-type>java.lang.String</env-entry-type>
7 <env-entry-value>/actionBazaar-service.xml</env-entry-value>
8 </env-entry>
9 </session>
0

https://dzone.com/asset/download/10 16/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

Although EJB 3 made deployment descriptor optional there are a few cases where
you still have to use it. In our example we"ve set the env-entry-value for the
ejb/BeanFactoryPath environment variable at /actionBazaar-service.xml. So you have
to package the EJB classes, Spring classes, and Spring configuration file into your ejb-
jar package. The Spring bean factory (configuration file) defines the Spring beans.
Refer to the Spring Configuration Refcard for details about Spring configuration.

Like This Refcard? Read More From DZone


DZone Article
Creating an Application using Spring Data with Redis as Datastore -- Part 1

DZone Article
An Introduction To JBoss RichFaces

related article thumbnail DZone Article


Non-blocking (NIO) Server Push and Servlet 3

related article thumbnail DZone Article


Using JSF and Flex Components Together

related refcard Free DZone Refcard


thumbnail Getting Started With Cross-Platform Heterogeneous
Computing

related refcard thumbnail Free DZone Refcard


GraphQL Essentials

related refcard thumbnail Free DZone Refcard


API Integration Practices and Patterns

related refcard thumbnail Free DZone Refcard


Introduction to Digital Asset Management via APIs

ABOUT US
About DZone
Send feedback
Careers
Sitemap

ADVERTISE
Advertise with DZone

CONTRIBUTE ON DZONE
Article Submission Guidelines
MVB Program
Become a Contributor
https://dzone.com/asset/download/10 17/18
06/02/2022 12:20 Dependency Injection in EJB 3 - DZone Refcardz

Visit the Writers' Zone

LEGAL
Terms of Service
Privacy Policy

CONTACT US
600 Park Offices Drive
Suite 300
Durham, NC 27709
[email protected]
+1 (919) 678-0300

Let's be friends: 


DZone.com is powered by 

AnswerHub logo

https://dzone.com/asset/download/10 18/18

You might also like