@Stateful: Indica que el Bean de Sesión es con estado. Sus atributos son:
name: Por defecto el nombre de la clase pero se puede especificar otra diferente. Identifica al Bean dentro del contenedor
mappedName: Si se quiere que el contenedor maneje el objeto de manera específica. Si incluimos esta opción nuestra aplicación no será portable puesto que liga al EJB con un contexto específico.
description: Descripción de la anotación.
@Stateless: Indica que el Bean de Sesión es sin estado. Sus atributos son:
name: Por defecto el nombre de la clase pero se puede especificar otra diferente. Identifica al Bean dentro del contenedor
mappedName: Si se quiere que el contenedor maneje el objeto de manera específica. Si incluimos esta opción nuestra aplicación no será portable puesto que liga al EJB con un contexto específico.
description: Descripción de la anotación.
@Remove: Indica que el contenedor debe llamar al método cuando quiera destruir la instancia del Bean. Sus atributos son:
retainIfException: Indica si el Bean debe mantenerse activo si se produce una excepción. Por defecto a false.
@Local: Indica que la interfaz es local.
@Remote: Indica que la interfaz es remota.
Métodos del ciclo de vida de un EJB
@PostConstruct: Invoca al método que posee esta anotación después de que el bean sea creado, en este momento aún no se han inyectado las dependencias por lo que no podemos hacer uso de ellas dentro del método anotado así.
@Create: Similar a @PostConstruct, con la diferencia en que en este punto, las dependencias sí han sido inyectadas y podemos hacer uso de las mismas.
@PreDestroy: Invoca al método que posee esta anotación después de que el bean sea destruido del pool del contenedor.
@PostActivate: Invoca al método que posee esta anotación después de que el Bean sea activado por el contenedor.
@PrePassivate: Invoca al método que posee esta anotación antes de que el Bean esté en estado passivate.
Anotaciones para la inyección de dependencias
@EJB: Mediante esta anotación el contenedor asignará a la variable que tenga la anotación la referencia del EJB indicado. Sus atributos son:
name: Nombre del recurso.
BeanInterface: Tipo de la interfaz de referencia, por defecto Object.class
BeanName: Nombre del bean especificado con el atributo name en caso de que varios beans implementen la misma interfaz.
mappedName: Si se quiere que el contenedor maneje el objeto indicado de manera específica.
description: Descripción de la anotación para la inyección de dependencia.
@PersistenceContext: Mediante esta anotación el contenedor asignará a la variable que tenga la anotación el objeto de la clase EntityManager que nos proporciona todo lo que necesitamos para manejar la persistencia. Sus atributos son:
name: nombre del objeto utilizado para la persistencia en caso de ser diferente al de la clase donde se incluye la anotación.
unitName: identifica la unidad de la persistencia usada en el bean en caso de que hubiera más de una.
type: tipo de persistencia, TRANSACTION (por defecto) o EXTENDED.
Dentro de una aplicación con JBoss Seam, es recomendable utilizar la anotación @In para inyectar el EntityManger y gestionar la persistencia.
@Resource: Referencia de un recurso específico. Sus atributos son:
name: nombre del recurso.
type: tipo del objeto (Object.class por defecto)
authenticationType: especifica dónde se debe realizar el proceso de autenticación, por defecto AuthSenticationType.CONTAINER
shareable: indica si el objeto se comparte, por defecto true.
mappedName: si se quiere que el contenedor maneje el objeto indicado de manera específica.
description: descripción de la anotación para la inyección de dependencia.
@In: Mediante esta anotación el contenedor asignará a la variable que tenga la anotación la referencia del Bean indicado. Se utiliza para inyectar componentes Seam que no son EJBs. Sus atributos son:
create: Indica si el objeto que tiene asociado la variable que contiene esta anotación debe ser creado o no (por defecto false).
required: Indica si el objeto que tiene asociado la variable que contiene esta anotación debe existir en el momento de creación de la clase actual.
scope: Indica el ámbito que ha de tener el objeto que tiene asociado la variable que contiene esta anotación.
value: Indica el nombre del bean que se pretende mapear a la variable que contiene esta anotación.