EJB Dependency InjectionResin 3.0

Note: These annotations will likle change package names to something other than javax.ejb as J2EE 1.5 drafts progress.

Session beans may be configured using dependency injection annotation.

  1. See Also
  2. Dependency Injection Annotations
    1. @EJB
    2. @Inject
    3. @Resource

See Also

Dependency Injection Annotations

@EJB

Configures an EJB values for a field or method.

@EJB is essentially a @Resource where it's known that the result is an EJB interface.

AttributeMeaningdefault
jndiNameThe jndi name of the resourceThe field name

In the following exaple, Resin will call setFoo method with the bean in "java:comp/env/ejb/foo" before the session is started.

@EJB
void setFoo(example.Test test)
{
  _test = test;
}
javax.ejb.EJB
@Target({TYPE, METHOD, FIELD, PARAMETER})
@Retention(RUNTIME)
public @interface EJB {
  String name() default "";
  String businessInterface() default "";
  String jndiName() default "";
}

@Inject

Configures a JNDI values for a field or method.

Inject relies heavily on defaults from the field or method name and type. If more information is required, use @Resource, @EJB, or @EJBHome.

AttributeMeaningdefault
jndiNameThe jndi name of the resourceThe field name

In the following exaple, Resin will call setDataSource method with the data source in "java:comp/env/jdbc/test" before the session is started.

@Inject(jndi-name="java:comp/env/jdbc/test")
void setDataSource(javax.sql.DataSource dataSource)
{
  _dataSource = dataSource;
}
javax.ejb.Inject
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Inject {
  String jndiName() default "";
}

@Resource

Configures a JNDI values for a field or method. @Resource is essentially the same as @Inject but provides more configurable options. @Resource can also be used at the Class level to declare a dependency in cases where the session bean loads the JNDI value by itself.

AttributeMeaningdefault
nameThe name of the resourceThe field name
resourceTypeThe resource typedThe field type
authenticationTypeWhether the container or the application is responsible for authenticationCONTAINER
shareableTrue if the bean follows JCA shareability requirements.true
jndiNameThe jndi name of the resourceThe field name

In the following exaple, Resin will call setDataSource method with the data source in "java:comp/env/jdbc/test" before the session is started. The "java:comp/env/jdbc" full name is inferred from the DataSource type.

default JNDI names
javax.sql.DataSourcejava:comp/env/jdbc
javax.mail.*java:comp/env/mail
javax.ejb.EntityManagerjava:comp/EntityManager
javax.transaction.UserTransactionjava:comp/UserTransaction
javax.ejb.EJBHomejava:comp/env/ejb
javax.jms.*java:comp/env/jms

@Resource(name="test")
void setDataSource(javax.sql.DataSource dataSource)
{
  _dataSource = dataSource;
}
javax.ejb.Resource
@Target({TYPE, METHOD, FIELD, PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {
  String name() default "";
  String resourceType() default "";
  AuthenticationType authenticationType() CONTAINER;
  boolean shareable() default true;
  String jndiName() default "";
}


Copyright © 1998-2005 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark, and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc.