Manual Ejbs 3.0 Manual Ejb 3.0

download Manual Ejbs 3.0 Manual Ejb 3.0

of 46

  • date post

    13-Jul-2015
  • Category

    Documents

  • view

    1.369
  • download

    0

Embed Size (px)

Transcript of Manual Ejbs 3.0 Manual Ejb 3.0

rea de Formacin

EJB 3.0

Ref.Mamual EJB 3.0.

1

rea de Formacin

NDICE1 Que haba antes? 2 Que ventaja nos ofrece ahora? 3 Aproximacin a la arquitectura. 4 Beans de sesin. 5 Seguridad 6 Transacciones en bean de sesin 7 Beans de Entidad. 7.1 7.2 7.3 7.4 Mapeando objetos Relaciones entre entidades Herencia entre entidades EJB QL

8 Beans de mensajera. 9 Temporizadores.

Ref.Mamual EJB 3.0.

2

rea de Formacin

1. Que haba antes?Partimos de ejb 2.1, de sus engorrosos interfaces y sus ficheros xml de configuracin. Ejb 2.1 nos obligaba a utilizar un objeto home que controlaba la instanciacin y destruccin de los objetos remotos. Estos objetos remotos contenan la lgica de negocio. Estos dos interfaces (home y remote) estaban pensados para realizar conexiones remotas (a travs de socket) por lo que se volvan inefic ientes si el cliente y el objeto remoto estaban situados en la misma mquina virtual, por ello se duplicaron para poder ofrecer un par que se conecte a travs de socket y otro par que se conecte a travs de la propia memoria de la mquina virtual. Sun ofreca a travs de la especificacin un fichero de configuracin que no cubra la totalidad de las configuraciones necesarias, por lo que cada servidor de aplicaciones necesitaba de un fichero de configuracin propietario diferente al de los otros servidores. Sun consider que era necesario ofrecer a los programadores acceso directo a la base de datos de manera remota, por lo que aparecan problemas de rendimiento al tener acceso a base de datos de manera remota.

2. Que ventaja nos ofrece ahora?Sobre todo, sencillez: Se han eliminado los interfaces home, slo disponemos de los remotos. Los bean de entidad son accesibles de manera local y no de manera remota, adems de utilizar una interfaz muy similar al concepto original de hibernate. Es decir, la persistencia es mucho ms sencilla de configurar. Seguimos disponiendo de envos de mensajes asncronos con los ejb de mensajera y podemos emplear servicios web de una manera mucho ms sencilla. Se emplean las anotaciones para modificar el comportamiento de los ejb sin necesidad de utilizar ficheros xml de configuracin. Esto se aplica a todos los tipos de ejb, clientes y a los servicios web. Adems emplea el nuevo sistema de inyeccin de valores, que permite declarar una variable, anotarla y conseguir que el servidor la asigne un valor (inyecte) automticamente desde el servicio de nombrado, ahorrndonos el uso del servicio de nombrado.

3. Aproximacin a la arquitecturaA pesar de la sencillez que nos ofrece es necesario conocer la arquitectura, para entender como utilizar a los ejb y a las anotaciones que nos permiten configurarlos. Beans de sesin Los beans de sesin son los objetos remotos clsicos, empleados como punto de entrada a la lgica de negocio de la aplicacin. No son objetos persistentes en la base de datos, pero puede ser de dos tipos: con estado y sin estado.

Ref.Mamual EJB 3.0.

3

rea de FormacinLos que tienen estado permiten que entre llamada y llamada de los mtodos del bean, un cliente pueda almacenar informacin temporalmente dentro del bean (mientras dure la sesin del cliente con el bean), en realidad el cliente usar el bean como si fuese un objeto propio java en su mquina virtual. Los ejb de sesin sin estado son compartidos a la vez por varios clientes, por lo que no pueden guardar la informacin de ningn cliente, habitualmente se invocan sus mtodos de manera independiente y pasndoles todos los parmetros necesarios para su funcionamiento en el mismo momento de su llamada. Accederemos a ellos de manera remota o local. Al trabajar de manera remoto es obvio que es necesario utilizar sockets para comunicar el cliente y el servidor, pero esto es una penalizacin muy grande si tenemos al cliente y al servidor en la misma mquina virtual (por ejemplo: una aplicacin web que se encuentra en el mismo servidor que el ejb), por ello disponemos del accceso en local, es decir sin pasar por sockets, trabajando directamenten en memoria. Beans de entidad En los beans de entidad se ha adoptado la especificacin Java Persistence 1.0 en la que se trata a las entidades de base de datos como POJOS, esto implica que todo ejb de entidad estar formado por una clase mapeada a una tabla, en la que se define los atributos y su mapeo a columnas. Es obligatorio utilizar una clave primaria para poder diferenciar a las distintas instancias, o registros.

Al trabajar con POJOS, podemos crearlos, almacenarlos, serializarlos (para poder enviarlos entre cliente y el servido, hacer consultas, modificaciones, eliminarlos,etc... ). Los Beans de entidad son gestionados por el EntityManager y no son accesibles de manera remota, por lo que, o bien se usan desde la misma mquina virtual, o bien se usan dentro de un bean de sesin o de mensajera y de esta forma son accesibles de manera remota. Bean de mensajera Muchas aplicaciones necesitan un mecanismo de comunicacin asncrono, que no pueden ofrecer los bean de estado,debido a su comportamiento sncrono. Por ello los bean de mensajera ofrecen esa capacidad de recibir y procesar un mensaje de un cliente, mientras este se encuentra realizando otras tareas, en lugar de obligar al cliente a mantenerse bloqueado a la espera del fin de la invocacin de un mtodo. Para lograr este comportamiento, el servidor de aplicaciones permite crear un buzn de mensajes siguiendo el api JMS. Nuestros bean de mensajera sacarn (a medida que puedan) los mensajes de los clientes acumulados en dicho buzn, e irn procesndolos. Los clientes deben de usar las clases del api JMS para poder emplear dichos buzones, por tanto no se utilizan igual que los bean de sesin.

Ref.Mamual EJB 3.0.

4

rea de FormacinClases e interfaces A la hora de trabajar con los ejb 3.0 en realidad veremos que nos enfrentamos a una serie de interfaces (hablamos de interfaces planos de java) y las clases que los implementan: Interfaz Remoto: Define los mtodos de la lgica de negocio que haremos accesibles a travs de un bean de sesin de manera remota. Empleamos la anotacin javax.ejb.Remote para marcarlos. Interfaz Local: Define los mtodos de la lgica de negocio que haremos accesibles a travs de un bean de sesin de manera local. Empleamos la anotacin javax.ejb.Remote para marcarlos. Interfaz EndPoint: Define los mtodos que sern accesibles a travs de soap. Empleamos la anotacin javax.ejb.WebService para marcarlos. Interfaz de mensajes: Define los mtodos que permiten al ejb de mensajera recibir los mensajes enviados por los clientes. Clase del Bean: Es la clase que implementa alguno/s de los interfaces anteriores y por tanto donde programaremos el cdigo de dichos mtodos. Suele estar marcada con: javax.ejb.Stateless si es de sesin sin estado javax.ejb.StateFull si es de sesin con estado javax.ejb.MessageDriven si es de tipo mensajera El contenedor de ejb Los ejb no viven en el aire, de manera autnoma, sino que precisan de los servicios que les ofrece el contenedor de ejb para su correcto funcionamiento: Servicio de nombrado: Permite localizar al los ejb y otros recursos a partir de su nombre. Servicio de transacciones: Gestionan y controlan las transacciones en las que se involucran los ejb. Servicio de persistencia: Bsicamente el EntityManager que usaremos para la persistencia. Servicio de seguridad: Controla la invocacin de los mtodos de los ejb, si el cliente posee o no los permisos necesarios para llevarlo a cabo. Tambin se encarga de gestionar el canal seguro SSL. Concurrencia: Los ejb no pueden ser concurrentes, por lo que no es necesario sincronizar sus mtodos Servicio temporizador: notifica a un ejb de tipo timer que se ha disparado el evento de tiempo solicitado. Pool de objetos y servicio de pasivacin: permiten que con pocas instancias de ejb demos servicios a muchos ms clientes.

Ref.Mamual EJB 3.0.

5

rea de FormacinFicheros empleados Vamos a disponer de ficheros con las siguientes extensiones: war: contiene una aplicacin web. jar: contiene una aplicacin con ejb en su interior. ear: contie ne una aplicacin enterprise, dentro de la cul tendremos ficheros war y jar.

Como vemos, el fichero ear acta como un contenedor que permite subir varias aplicaciones juntas.

4. Beans de sesinSon objetos remotos, accesibles de manera local o remota, ofreciendo la lgica de negocio. Es muy frecuente que en su interior se manejen las entidades asociadas a base de datos (beans de entidad). El bean de sesin se encuentra disponible a travs del servicio de nombrado ofrecido por el servidor , bajo un nombre que depende del servidor de aplicaciones en cuestin, en nuestro caso seguiremos la especificacin de sun en sus servidores, en concreto asumiremos el uso de glassfish que acompaa a netbeans. Pueden estar formados por el interfaz Remoto y por el Local, aunque no es obligatorio disponer de ambos:CalculadoraRemote.java:

package ejb; import javax.ejb.Remote; @Remote public interface CalculadoraRemote { public double sumar(double operando1, double operando2); }

CalculadoraLocal.java:

package ejb; import javax.ejb.Local; @Local public interface CalculadoraLocal { public double sumar(double operando1, double operando2); }

y de la clase que los implementa:

Ref.Mamual EJB 3.0.

6

rea de FormacinCalculadoraBean.java: package ejb; import javax.ejb.Stateless; @Stateless public class CalculadoraBean implements CalculadoraRemote, CalculadoraLocal { @Resource private SessionContext ctx; public double sumar(double operando1, double operando2) { return operando1+operando2; } }

A todo esto le agregamos el cdigo de los dos posibles tipos de cliente:Main.java: package proyectoejb3; import ejb.CalculadoraRemote; import java.rmi.RemoteException; import javax.ejb.EJB; public class Main { @EJB private static CalculadoraRemote cr; public static void main(String[] args) thr