Session beans may be configured using dependency injection annotation. Note These annotations will likely change package names to something
other than javax.ejb as J2EE 1.5 drafts progress.See AlsoBean Annotations@EntityMarks the class as an entity bean. Each entity bean corresponds to
a database row. Entity bean persistence is configured with
the Amber annotations.
In EJB 3.0, the application uses entity bean instances directly. Unlike
EJB 2.1, there is no pooling, local stub, or home interface for an entity. name | The bean's name | The bean's class name
| entityType | container-managed (CMP) or bean-managed (BMP) | CMP
| access | field-based (FIELD) or method-getter based (PROPERTY) | PROPERTY
| version | EJB version | 3
|
@Target(TYPE)
@Retention(RUNTIME)
public @interface Entity {
String name() default "";
EntityType entityType() default EntityType.CMP;
AccessType access() default AccessType.PROPERTY;
int version() default 3;
}
|
@TransactionAttributeDefines the transaction boundary for session business methods. The
default value is REQUIRED. If
@TransactionAttribute annotates the class, it defines the default
value. TransactionAttribute | meaning
|
---|
REQUIRED | Start a new transaction if necessary
| SUPPORTS | Don't start a new transaction, but use one if it
exists
| MANDATORY | Require the caller to have started a transaction
| NEVER | Forbid the caller to have started a transaction
| REQUIRESNEW | Always start a new transaction, suspending the
old one
| NOTSUPPORTED | Suspend any active transaction
|
- SUPPORTS is typically used for read-only methods
- REQUIRED is typically used for updating (read/write) methods
@Target({TYPE,METHOD})
@Retention(RUNTIME)
public @interface TransactionAttribute {
TransactionAttributeType value() default REQUIRED;
}
|
Dependency Injection Annotations@EJBConfigures an EJB values for a field or method. @EJB is essentially a @Resource where it's known that the
result is an EJB interface. jndiName | The jndi name of the resource | The 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 "";
}
| @InjectConfigures 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.
jndiName | The jndi name of the resource | The 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 "";
}
| @ResourceConfigures 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. name | The name of the resource | The field name
| resourceType | The resource typed | The field type
| authenticationType | Whether the container or the application is responsible for authentication | CONTAINER
| shareable | True if the bean follows JCA shareability requirements. | true
| jndiName | The jndi name of the resource | The 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 namesjavax.sql.DataSource | java:comp/env/jdbc
| javax.mail.* | java:comp/env/mail
| javax.ejb.EntityManager | java:comp/EntityManager
| javax.transaction.UserTransaction | java:comp/UserTransaction
| javax.ejb.EJBHome | java: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-2006 Caucho Technology, Inc. All rights reserved. Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology. |
|