Esta clase esta fraccionada en dos partes, la primera describe las implementaciones relacionadas con las interfases, mientras la otra describe los métodos requeridos por un "Entity EJB".
Clase CuentaBancariaBeanCMP
package com.osmosislatina.ejb.cuentaCMP; import java.util.*; import javax.ejb.*; public abstract class CuentaBancariaBeanCMP implements EntityBean { private EntityContext ctx; |
public abstract String getId(); public abstract void setId(String id); public abstract String getNombre(); public abstract void setNombre(String nombre); public abstract String getApellido(); public abstract void setApellido(String apellido); public abstract double getSaldo(); public abstract void setSaldo(double saldo); public void abonar(double cantidad) { double saldo = getSaldo(); saldo += cantidad; setSaldo(saldo); } |
public void deducir(double cantidad) throws SaldoInsuficiente { double saldo = getSaldo(); if (saldo - cantidad < 0) { throw new SaldoInsuficiente(); } saldo -= cantidad; setSaldo(saldo); } |
En esta primer sección se importan las diversas clases que serán utilizadas a lo largo del EJB, vale notar que dentro de éstas no se incluyen
java.sql
yjavax.sql
las cuales son empleadas para accesar Bases de Datos, este código será generado por el "Application Server/EJB Container" y colocado en la SubClase.Posteriormente se inicia la declaración de la clase, la cual siempre implementa
EntityBean
, note que a diferencia de un "BMP EJB" esta clase es definida comoabstract
.
El uso de |
Son definidos los métodos correspondientes al "Remote Interface":
deducir
,abonar
,getNombre
,getApellido
,getSaldo
,getId
, de nuevo note que todo método relacionado con el acceso a Bases de Datos es definido comoabstract
.
A continuación se describen los métodos requeridos por todo "Entity EJB"
public String ejbCreate(String id, String nombre, String apellido, double saldo) throws CreateException { setId(id); setNombre(nombre); setApellido(apellido); setSaldo(saldo); return id; } |
public void ejbPostCreate(String id, String nombre, String apellido, double saldo) { } |
public void setEntityContext(EntityContext ctx) { this.ctx = ctx; } public void unsetEntityContext() { this.ctx = null; } public void ejbActivate() { } public void ejbPassivate() { } public void ejbLoad() { } public void ejbStore() { } public void ejbRemove() { } } |
El método
ejbCreate
a diferencia de aquel utilizado en "BMP EJB's" no contiene ningún tipo de lógica, la instancia del EJB es creada a través de métodos y la inserción en la Base de Datos es llevada acabo por la SubClase del EJB.Los métodos restantes no contienen ningún tipo de lógica, sus implementaciones también son llevadas acabo a través de la SubClase.