Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(Enero de 2005)
Vamos a ver un diagrama para no perder la visión de conjunto. Lo haremos ayudándonos de un ejemplo en el que la clase
AccountEJB representa al Bean de una cuenta.
En el código fuente del cliente se refleja estas relaciones con los elementos del EJB. Para simplificar el cliente es una sencilla
aplicación Java en modo texto. Importa recalcar que el cliente accede al Bean por medio de referencias del interfaz remoto
(Account).
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
try {
////// Creo un contexto
Context initial = new InitialContext();
Object objref = initial.lookup("MyAccount");
////// Crea los Beans, referenciados por su interfaz remoto o "vista del bean" (Account)
Account duke = home.create("123", "Duke", "Earl", 0.00);
Es un interfaz que declara los métodos de lógica de negocio implementados en el EntityBean. Es el intermediario con el Bean:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
import java.util.Collection;
import java.rmi.RemoteException;
import javax.ejb.*;
Los datos que nos interesan de la base de datos aparecen como atributos (id, nombre, balance, etc.). Además suele tener
atributos no asociados directamente con la base de datos.
Puesto que implementa el interfaz EntityBean debe definir los métodos de dicho interfaz: load(), etc.
Define los métodos de negocio, como por ejemplo, los que definen la forma de calcular el balance: debit(), credit(), etc.
En este ejemplo el bean es el responsable de la persistencia, por ello accede por medio de JDBC a la base de datos.
Observar la implementación de otra regla de negocio: si se trata de crear un objeto que tiene un balance negativo, no se llega a
realizar la instancia y se lanza una excepción.
import java.sql.*;
import javax.sql.*;
import java.util.*;
import javax.ejb.*;
import javax.naming.*;
balance += amount;
}
return balance;
}
try {
insertRow(id, firstName, lastName, balance);
} catch (Exception ex) {
throw new EJBException("ejbCreate: " +
ex.getMessage());
}
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.balance = balance;
return id;
}
....
Volver al índice