El dato de EntityContext no se escribe en el almacenamiento permanente porque su propósito es proporcionar información sobre el contexto en el momento de ejecución del contenedor. Por lo tanto, no contiene datos sobre el usuario registrado y no debería grabarse en un medio de almacenamiento. Las otras variables están declaradas como public, por lo que el contenedor de este ejemplo puede descubrirlas usando el API Reflection.
protected transient EntityContext ctx;
public String theuser, password, creditcard,
emailaddress;
public double balance;
public RegistrationPK ejbCreate(String theuser,
String password,
String emailaddress,
String creditcard)
throws CreateException, RemoteException {
this.theuser=theuser;
this.password=password;
this.emailaddress=emailaddress;
this.creditcard=creditcard;
this.balance=0;
public void setEntityContext(
javax.ejb.EntityContext ctx)
throws RemoteException {
this.ctx = ctx;
}
public void unsetEntityContext()
throws RemoteException{
ctx = null;
}
Nota: No todos los objetos Beans están vivos en un momento dato. El servidor de JavaBeansTM de Enterprise podría tener un número configurable de Beans que puede mantener en memoria.
Este método no está implementado porque el contenedor de los JavaBeans de Enterprise carga los datos por nosotros.
public void ejbLoad() throws RemoteException {}
public void ejbStore() throws RemoteException {}
Sin embargo, no estamos limitados a la cola de conexiones JDBC. Podemos sobreescribir el comportamiento de la cola de conexiones del Bean y sustituirla nosotros mismos.
(environmentProperties
(persistentStoreProperties
persistentStoreType jdbc
(jdbc
tableName registration
dbIsShared false
poolName ejbPool
(attributeMap
creditcard creditcard
emailaddress emailaddress
balance balance
password password
theuser theuser
); end attributeMap
); end jdbc
); end persistentStoreProperties
); end environmentProperties
El descriptor de desarrollo indica que el almacenamiento es una base de datos cuya conexión está contenida en una cola de conexiones JDBCTM llamada ejbPool. El attributeMap contiene la variable del Bean Enterprise a la izquierda y su campo asociado de la base de datos a la derecha.
<persistence-type>Container</persistence-type>
<cmp-field><field-name>creditcard
</field-name></cmp-field>
<cmp-field><field-name>emailaddress
</field-name></cmp-field>
<cmp-field><field-name>balance
</field-name></cmp-field>
<cmp-field><field-name>password
</field-name></cmp-field>
<cmp-field><field-name>theuser
</field-name></cmp-field>
<resource-ref>
<res-ref-name>registration</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Los campos del contenedor controlador se mapean directamente a su nombre contraparte en la tabla de la base de datos. El recurso de autorización del contenedor (res-auth) significa que el contenedor maneja el login a la tabla REGISTRATION.