Menú Curso Java EJB's : Código Fuente "CuentaBancariaBeanCMP" (SuperClase) implementación EJB de un "CMP Entity Bean"

(Anterior) CMP ("Container Managed Persistence")

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 y javax.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 como abstract.

El uso de abstract permite a esta clase accesar métodos que serán implementados en otra clase, esto es, debido a que la lógica JDBC será generada en una SubClase por el "Application Server/EJB Container" debe existir una manera para que la SuperClase tenga acceso a estos métodos, y es a través del uso abstract que se logra esta funcionalidad.

  • 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 como abstract.

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.

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com