martes, 13 de diciembre de 2011

@EJB


En un post anterior hicimos un proyecto con maven y JEE 

Pero en ese caso hicimos un lookup pero podríamos haber usado @EJB de la siguiente manera:


@EJB(mappedName="HolaMundoImpl/remote")
private HolaMundo holaMundo = null;

Y con esto nos ahorrábamos el lookup.

Cuales son los atributos de @EJB y para que se usan?

@EJB indica la dependencia de un ejb tanto local como remoto. Esta anotación tiene diferentes atributos los cuales analizaremos luego de revisar el concepto de ENC. Todos los EJB tienen un ENC (Enterprise Naming Context ) es como un registro interno donde fue deployeada esta aplicación.

Por ejemplo:

@Stateless(name="MyEJB")
public class MyEJBBean implements MyEJBRemoteBusiness, MyEJBLocalBusiness
{
...
}

Si nosotros asumimos que este EJB esta en myejb.jar y dentro de myapp.ear se puede tener una referencia a este bean de la siguiente manera:

javax.naming.Context jndiContext = new InitialContext(); // Assume we have this
// Define the contracted value
final String jndiName = "java:global/myapp/myejb/MyEJB!" +
MyEJBRemoteBusiness.class.getName();
MyEJBRemoteBusiness bean = (MyEJBRemoteBusiness)jndiContext.lookup(jndiName);

Cada bean contiene su JNDI ENC. La registración a JNDI ENC puede ser registrado bajo el contexto java:comp/env comp es porque es un componente. Cuando hacemos el lookup se resuelve la dependencia de diferentes contextos.

@EJB tiene los siguientes atributos:

name: atributo el cual indica conque nombre acedemos a una referencia EJB en JNDI ENC.

BeanName: este es el nombre de una referencia.

MappedName : es especifico del vendor; es una key dentro de la registración global. Es una forma de acceder a la referencia en el JNDI global. Por medio de mappedName varios vendors introducen características particulares. 

Esto fue una reseña general de @EJB.