Вы находитесь на странице: 1из 13

INACAP CHILLAN

Analista Programador Ingeniera de Software

Patrn de Diseo: EJB

Nombre Alumno (s): Juan Luis Jara Miguel Mendoza Sebastin Villalobos Nombre Profesor: Fernando Santolaya Fecha: lunes 11 de mayo del 2012

ndice

Qu es el patrn de diseo de EJB?..............1 Estructura de un EJB.2-3 Ventajas y desventajas4 Tipos de EJB.5 Ejemplo UML..6 Ejemplo cdigo.7-10

Qu es el patrn de diseo EJB?


Enterprise Java Beans es el componente principal del grupo de especificaciones de J2EE definidas por Sun, a travs de EJB's se define una estructura ("Framework") en la cual es posible manipular e interactuar con procesos e informacin que residen en diversos ambientes computacionales desde "MainFrames" hasta Bases de Datos. Estos componentes (EJB's) contemplan diversas caractersticas esperadas de una aplicacin empresarial como: Control de Transacciones, Seguridad, Threading, Propagacin de Transacciones, y otras funcionalidades ms. Dichos componentes son ejecutados dentro de un Application Server de los cuales existen aproximadamente 10 en el mercado, adems cabe mencionarse que actualmente existen tres tipos principales de EJB's. Los EJBs pueden ser vistos como componentes, desde el punto de vista que encapsulan comportamiento y permite reutilizar porciones de cdigo, pero tambin pueden ser vistos como un framework, ya que, desplegados en un contenedor, proveen servicios para el desarrollo de aplicaciones enterprise, servicios que son invisibles para el programador y no ensucian la lgica de negocio con funcionalidades trasversales al modelo de dominio (a menudo requerimientos no funcionales o aspectos).

Estructura de un EJB.
Un EJB est compuesto de 4 partes (con la excepcin de Messaging EJB's) las cuales son: "Enterprise Bean Class" "Home Interface" "Remote Interface" "Deployment Descriptor"

"Enterprise Bean Class" Esta clase es el componente medular de un EJB, en esta clase se encuentran definidas toda las funciones utilizadas por un EJB, ya sean procedimientos rutinarios (operaciones matemticas) o con lgica hacia bases de datos (JDBC). "Home Interface" Esta Interface (como cualquier otra en Java) solo define un esqueleto para funciones utilizadas en el "Enterprise Bean Class", las funciones que deben ser declaradas en un "Home Interface" son aquellas necesarias para la creacin-activacin de un EJB, algunas de estas son: create, passivate, activate. Es de suma importancia recordar que esta interface (como cualquier otra en Java) no define ningn tipo de lgica o cdigo fuente, solo es una declaracin o "esqueleto" de funciones, la lgica o cdigo se encuentra dentro del "Enterprise Bean Class".

"Remote Interface" Esta interface contiene las declaraciones para funciones de negocios definidas en el "Enterprise Bean Class", y al igual que toda interface, solo contiene el "esqueleto" de las funciones. El nmero de declaraciones depender de las funciones declaradas en el "Enterprise Bean Class". "Deployment Descriptor" Un "Deployment Descriptor" es un archivo en XML que cumple varias funciones. La primera es parametrizar el cdigo Java del "Enterprise Bean Class", esto es, definir parmetros que varan dependiendo del ambiente; por lo general todo EJB contiene algn tipo de lgica que depender del ambiente de ejecucin como: nombres de Bases de Datos, Servidores de Paginas, Usuarios privilegiados u otros detalles. Es a travs del "Deployment Descriptor" que estos parmetros pueden ser modificados sin la necesidad de modificar el cdigo fuente, inclusive para aquellos EJB's adquiridos de 3eros los cuales no distribuyen su cdigo fuente es la nica manera de "ajustar" este tipo de parmetros. Adems de lo anterior, el "Deployment Descriptor" tambin indica al "EJB Container": el tipo de EJB ("Session, Entity, Messaging"), el esquema de seguridad que posee el EJB, en caso de ser un "Container Managed Entity EJB" las funciones para las que se generar lgica, y otras funcionalidades ms.

Ventajas y Necesidades.
Los patrones de diseo son empleados en muchos desarrollos de Software ya que ofrecen una mejor practica entorno al problema que se intenta resolver, de alguna manera son las experiencias continuas que han resultado al enfrentarse a determinado problema; en los diseos de EJB's ya se han documentado diversas practicas que eficientizan y agilizan su funcionamiento en "Application Servers/EJB Containers", estas prcticas son denominadas "Patrones de Diseo" ("Design Patterns").

Tipos de EJB
Existen 3 tipos de EJBs: - Session Beans: en una aplicacin enterprise tpica, dividida en cuatro grandes capas o layers (presentacin, lgica de negocio (business logic), persistencia y base de datos (DBMS)), los Session Beans viven en la lgica de negocio. Hay dos grandes tipos de Session Beans: Stateless y Stateful, el primero no conserva el estado de ninguno de sus atributos de la invocacin de un mtodo a otro y el segundo conserva el estado a lo largo de toda una sesin. Los Session Beans Stateless son los nicos que pueden exponerse como web services. - Message-Driven Beans (MDBs): tambin viven en la lgica de negocio y los servicios que proveen son parecidos a los Session Beans, con la diferencia de que los MDBs son usados para invocar mtodos de forma asincrnica. Cuando se produce la invocacin de un mtodo de un MDB desde un cliente, la llamada no bloquea el cdigo del cliente y el mismo puede seguir con su ejecucin, sin tener que esperar indefinidamente por la respuesta del servidor. Los MDBs encapsulan el popular servicio de mensajera de Java, JMS. Hay una analoga muy interesante en el libro que dice que los MDBs son a JMS lo que JDBC es a SQL. - Entities: los entities viven en la capa de persistencia y son los EJBs que manejan la Java Persistence API(JPA), tambin parte de la especificacin de EJB 3.0. Los entities son POJOs con cierta metadata que permite a la capa de persistencia mapear los atributos de la clase a las tablas de la base de datos y sus relaciones.

Ejemplo UML

Ejemplo de cdigo
Enterprise Beans Class
package com.osmosislatina.ejb.intereses; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class InteresesBean implements SessionBean { public double calcularInteres(double capital, double tasa, double plazo) { System.out.println("Un Cliente llamo la funcin para calculo de Inters"); return capital * Math.pow(1+tasa, plazo) - capital; } public InteresesBean() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbPassivate() {} public void ejbActivate() {} public void setSessionContext(SessionContext sc) {} }

HOME INTERFACE
package com.osmosislatina.ejb.intereses; import javax.ejb.EJBHome; import javax.ejb.CreateException; import java.rmi.RemoteException; public interface InteresesHome extends EJBHome { Intereses create() throws RemoteException, CreateException; }

REMOTE INTERFACE
package com.osmosislatina.ejb.intereses; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Intereses extends EJBObject { public double calcularInteres(double capital, double tasa, double plazo) throws RemoteException; }

Deployment Descriptor
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>Calculo de Intereses</description> <display-name>Calculo</display-name> <enterprise-beans> <session> <ejb-name>Calculo</ejb-name> <home>com.osmosislatina.ejb.intereses.InteresesHome</home> <remote>com.osmosislatina.ejb.intereses.Intereses</remote> <ejb-class>com.osmosislatina.ejb.intereses.InteresesBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>

10

Conclusin
En este trabajo conocimos y recordamos una de las herramientas mas utiles que podemos utilizar para programar en leguaje java. Es una herramienta muy til y bastante fcil de usar para la ayuda del programador, y facilita bastante nuestra tarea. El patrn de diseo EJB consta de poder ejecutar el cdigo de parte del servidor el cual est dividido en cuatro partes antes descritas en el cdigo antes presentado, de esa forma se logra una mayor eficiencia en el diseo del patrn por parte del servidor.

11

Вам также может понравиться