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.