Title: ENTERPRISE JAVA BEANS EJBs
1ENTERPRISE JAVA BEANS (EJBs)
2Introducción a J2EE
- Es un estandar. Plataformas comerciales IBM
WebSphere, BEA Weblogic, Oracle9iAS o Sun ONE - J2EE (Java2 Enterprise Edition) ofrece un
conjunto de aplicaciones con especificaciones
para diseñar, desarrollar, ensamblar y desplegar
aplicaciones de negocio. - Provee una plataforma independiente, basada en
componentes, distribuÃda, debilmente acoplada,
confiable y segura en un ambiente de aplicaciones.
3Multitired Multithread
4Especificaciones de J2EE
- Las especificaciones de J2EE define los
siguientes componentes - Application clients and applets are components
that run on the client. - Java Servlet and JavaServer Pages (JSP )
technology components are Web components that run
on the server. - Enterprise JavaBeans (EJB ) components are
business components that run on the server. - Componentes J2EE ! Java Class en las
especificaciones
5Antes de seguir
- Enterprise JAVA Bean JAVA Bean?
6JAVA Bean
- Componente utilizado en JAVA que permite agrupar
funcionalidades que forman parte de una
aplicación. - Un JAVA Bean puede agrupar información personal,
datos sobre un pedimento, requerimientos de
órdenes, etc. - Requiere ser integrado con otros componentes para
ser funcional.
7Enterprise JAVA Bean
- Agrupa funcionalidades para una aplicación.
- Es un componente de despliegue, es decir, que
existe un ambiente de ejecución (Enterprise Java
Bean Container) . - No requiere ser integrado, ya que puede ser
activado mediante el Contenedor de los EJB
8Tipos de clientes en J2EE
- Web Client contenido dinámico y browser
- Applets
- Application Clients
- JavaBeans Component Arquitecture no J2EE
- Server Communications
9Componentes del Servidor
10Servidor Web Tier
11Servidor Business Tier y EIS Tier
12Java Bean
- En general, un bean es una clase que obedece
ciertas reglas - Un bean tiene que tener un constructor por
defecto (sin argumentos) - Un bean tiene que tener persistencia, es decir,
implementar el interface Serializable. - Un bean tiene que tener introspección. Los IDE
reconocen ciertas pautas de diseño, nombres de
las funciones miembros o métodos y definiciones
de las clases, que permiten a la herramienta de
programación mirar dentro del bean y conocer sus
propiedades y su conducta.
13Más sobre los EJBs
- Un EJB es un conjunto de código que contiene
campos y métodos para la implementación de
módulos en una lógica de negocio. - Puede pensarse en un EJB como un bloque de
construcción que puede ser empleado de manera
independiente o en conjunto con otros EJBs para
la ejecución de una lógica de negocio en un
servidor J2EE.
14J2EE Technology Architecture
html
Web clients
Application clients
IIOP
Java Server pages
Servlets
Enterprise Java Beans Components
Server platform
JTS
JMAPI
JNDI
JMS
JDBC
JAXP
JAAS
15Elementos que lo componen
16(No Transcript)
17Aplicación con múltiples EJBs
EJB4
EJB2
WebClient
EJB1
EJB5
EJB3
EJB6
ApplClient
18Enterprise Java Bean(EJB)
- An enterprise bean is a server-side component
that contains the business logic of an
application. At runtime, the application clients
execute the business logic by invoking the
enterprise bean's methods. - Main goal of Enterprise Java Bean (EJB)
architecture is to free the application developer
from having to deal with the system level aspects
of an application. This allows the bean developer
to focus solely on the logic of the application
19Roles in EJB Development
- Bean developer Develops bean component.
- Application assembler composes EJBs to form
applications - Deployer deploys EJB applications within an
operation environment. - System administrator Configures and administers
the EJB computing and networking infrastructure. - EJB Container Provider and EJB server provider
Vendors specializing in low level services such
as transactions and application mgt.
20Cuándo usarlos?
- Debe considerarse la opción de emplearlos cuando
la aplicación a desarrollarse cumple con alguno
de los siguientes requerimientos - Si la aplicación debe ser escalable.
- Para adaptarse al crecimiento en el número de
usuarios podrÃa ser necesario distribuir los
componentes de la aplicación en diversas
máquinas. Los EJB no sólo pueden ser ejecutados
de distintas máquinas sino que su ubicación
permanece transparente para los usuarios.
21Cuándo usarlos?
- Si debe asegurarse la integridad de datos en
transacciones. - Los EJB soportan las transacciones asà como
mecanismos que controlan el acceso concurrente a
los objetos compartidos. - Si la aplicación tendrá una variedad de clientes.
- Con solo unas cuántas lÃneas de código, clientes
remotos pueden localizar fácilmente los EB. Estos
clientes pueden ser pocos, varios o numerosos.
22Por qué usarlos?
- Porque simplifican el desarrollo de grandes
aplicaciones distribuidas. - El contenedor de EJB provee servicios a nivel
de sistema para los EJB, el bean de desarrollo
puede concentrarse en resolver problemas de
negocios. El contenedor del EJB es el responsable
por los servicios a nivel de sistema tales como
manejo de transacciones y seguridad de
autorización.
23Por qué usarlos?
- Los beans contienen las aplicaciones de la
lógica de negocios y el desarrollador de interfaz
puede concentrarse en la presentación al cliente.
El desarrollador no tiene que codificar las
rutinas que implementan las reglas de negocio o
los accesos a bases de datos. Como resultado, las
interfaces (o clientes) pueden ser tan ligeros
como sea necesario beneficio particularmente
importante para clientes que ejecutan en
dispositivos pequeños.
24Por qué usarlos?
- Debido a que son componentes portables, el
ensamblador de la - aplicación puede construir nuevas aplicaciones
partiendo de beans existentes (reuso) las cuales
pueden ejecutarse en cualquier servidor de J2EE.
25Entidades de negocio, Procesos y Reglas
- Las aplicaciones de EJB agrupan las reglas de
negocio en componentes. - Los componentes usualmente representan una
entidad o proceso de negocio. - Entidad es un objeto representando alguna
información relevante para la empresa. Posee un
estado que puede ser o no persistente. Algunos
ejemplos son Cliente, orden, empleado. - Dependencia es una relación definida entre dos
entidades.
26Proceso
- Es un objeto que tÃpicamente encapsula la
interacción de un usuario con las entidades de
negocio. - Un proceso usualmente actualiza y cambia los
estados de las entidades. - Un proceso de negocio puede tener su propio
estado, el cual puede existir sólo mientras
exista el proceso. Cuando se completa el proceso
su estado deja de existir. - El estado de un proceso puede ser transitorio o
permanente.
27Reglas de negocio
- Las reglas de negocio se definen según los
componentes sobre los que aplica - Las reglas que refieren a las entidades deben ser
implementadas en el componente que representa a
la entidad. - Las reglas que aplican a los procesos deben ser
implementadas en los componentes que representan
a los procesos.
28Middleware
- Tipos
- Middleware explÃcito ofrece servicios pero
requiere que los desarrolladores de data objects
programen los puntos de acceso a dichos servicios.
29Middleware ExplÃcito
30Middleware
- Tipos (cont.)
- Middleware implÃcito el soporte para estos
servicios es intrÃnseco. Los puntos de acceso son
provistos por la especificación de los
componentes, de manera que los desarrolladores
solo deben cumplir con la especificación de la
lógica del proceso de negocio. El middleware
implÃcito genera receptores de peticiones que
proveen acceso automático a los servicios de
middleware.
31Middleware ImplÃcito
32Servicios ImplÃcitos Vs. ExplÃcitos
- Usualmente los servicios como transacciones,
seguridad, drivers de base de datos, etc. se
incluÃan en el código de punto de acceso,
obligando a cada programador a entender los
detalles de todos los posibles servicios
necesarios en una aplicación. - Ahora podemos decidir qué servicios dejamos
llevar a cabo por el contenedor. - La declaración de estos servicios se hace a
través de un XML deployment descriptor.
33Tipos de EJB
- Existen 3 tipos de EJB
- Beans de sesión
- Con estado
- Sin estado
- Beans de entidad
- Beans dirigido por mensaje
34Tipos de EJB
35Beans de sesión
- Representan a un solo cliente dentro del servidor
J2EE. - Para acceder a una aplicación el cliente invoca
los métodos del bean. - El Bean ejecuta el trabajo para su cliente,
excluyéndolo de la complejidad al ejecutar las
tareas de negocio dentro del servidor. - Es similar a una sesión interactiva.
- No compartido. Sólo puede tener un cliente.
- No es persistente.
- Cuando el cliente termina, su bean de sesión
finaliza y anula su asociación con el cliente.
36Tipos de beans de sesión
- Bean de sesión sin estado
- Las variables de la instancia pueden mantener un
estado pero solo mientras dure la invocación. - Soporta múltiples usuarios.
- Mayor escalabilidad.
- Mejor desempeño.
37Ciclo de Vida (Sin estado)
38Tipos de beans de sesión
- Bean de sesión con estado
- Las variables instanciadas representan el estado.
- También se le conoce como Estado
Conversacional. - El estado se mantiene durante toda la sesión y
desaparece cuando el cliente se desconecta o
finaliza la sesión.
39Ciclo de Vida (Con estado)
40Cuándo emplearlos?
- Si tengo un cliente el cual solo tendrá acceso a
una instancia del bean. - Cuando el estado no sea persistente (sólo
existira en un corto periodo de tiempo, algunas
horas). - (Estado) Si el estado representa una interacción
entre el bean y un cliente especÃfico - (Estado) Si se requiere mantener la información
del cliente a través de la invocación de métodos - (Estado) Si el bean es un intermediario entre el
cliente y otros métodos de la aplicación
presentándole una vista simplificada
41Cuándo emplearlos?
- (Estado) El Bean controla el manejo del flujo de
trabajo de varios EJB. - (Sin estado) El estado del bean no tiene datos
para un cliente especÃfico. - (Sin estado) El bean realiza una tarea genérica
para todos los clientes. Por ejemplo, se puede
usar un bean sin sesión para enviar un correo que
confirme una orden en lÃnea. - (Sin estado) El bean busca en una BD un conjunto
de datos de solo-lectura que es frecuentemente
usado por los clientes. Tal bean podrÃa, por
ejemplo, recuperar las filas de la tabla que
representan los productos que están en venta este
mes.
42Beans de entidad
- Representa un objeto de negocios en un mecanismo
de almacenaje persistente. - Algunos ejemplos clientes, órdenes, productos,
etc. - Normalmente cada bean tiene una tabla y cada
instancia del bean representa una lÃnea en una
tabla.
43Beans de entidad
- Persistentes (el estado existe más allá del
tiempo de vida de la aplicación o del proceso de
la aplicación) - Permiten acceso compartido
- Contienen claves primarias (identificador)
- Pueden interactuar con otros beans de entidad (p.
ej. EstudianteBean con CursoBean).
44Ciclo de vida
45Cuándo usarlos?
- Cuando se representa una entidad de negocios y no
un procedimiento. (p. ej. TarjetaCreditoBean será
un bean de entidad mientras que
VerificadorTarjetaCredito será un bean de sesión) - Cuando el estado deba ser persistente. Si la
instancia termina o se apaga el servidor de la
aplicación, el estado del bean existe en una BD.
46Beans dirigido por mensaje
- Permite a las aplicaciones de J2EE procesar
mensajes de manera asÃncrona. - Actua como un listener de mensajes, similar a
un listener de eventos. - Los mensajes pueden ser enviados desde cualquier
componente de J2EE u otra aplicación JMS que no
emplee tecnologÃa J2EE. - Pueden procesar mensajes JMS.
47Beans dirigido por mensaje
- Se ejecutan por un mensaje del cliente.
- Son invocados de manera asÃncrona.
- Tienen un periodo de vida corto.
- No mantiene estado para un cliente especÃfico.
- Un Bean puede procesar mensajes de multiples
clientes. - Pueden ser transaction-aware.
48Ciclo de Vida
49Cuándo usarlos?
- Cuando no se desea saturar los recursos del
sistema por el envÃo de mensajes de manera
sÃncrona (beans de sesión y de entidad)
50Compilation and Deployment
- Compilation (building the executables) uses build
tool such as Apache Ant. - The components of the various tiers are
packaged .jar, .war, .ear - Declarative resources are added.
- A deploy tool or management tool is used to
deploy the packaged units into a J2EE server
(container).
51Creating a EJB-jar file
Local Interfaces
Home interfaces
Ejb Jar file
Jar file creator
Enterprise Bean Classes
Remote Interfaces
Vendor Specific Files
Deployment Descriptor
52Ejemplos de Usos
53Escogiendo entre Entity o Session Bean
- Una entidad del negocio se implemente como entity
bean - Proceso de un negocio como session bean.
- Cualquier proceso que necesite persistencia es
representado con un entity bean. - Cuando un proceso o una entidad no tienen la
necesidad de interactuar con otras aplicaciones,
estos se implementas como objetos dependientes
del bean.
54Partes de un EJB
- EJB class implementan los metodos del negocio y
del ciclo de vida. - Client-view API consiste en las interfaces
locales y remotas del EJB. - Interfaz local controla en ciclo de vida invoca
los metodos locales create, remove, find methods - Interfaz Remota invoca el metodo del EJB
55Partes de un EJB
- Deployment Descriptor un documento XML para el
contenedor - Declaraciones del EJB necesaria para modificar el
bean al ambiente de operación. - Servicios del contenedor al momento de ejecución
como seguridad,distribución,balanceo de cargas,
multihilos, presistencia, recuperación ante
fallas, colas de recursos, manejo de estado, etc.
56Partes de un EJB
ltltHome Interfacegtgt AccountHome
ltltRemote Interfacegtgt Account
create() find() remove()
debit() credit() getBalance()
ltltEnterrpise Bean classgt AccountBean
Deployment Descriptor
name AccountEJB class AccountBean home
AccountHome remote Account type
Entity transaction required ..
ejbCreate() ejbFind() ejbRemove() debit() credit()
getBalance()
57AccountHome Interface
- import java.rmi.RemoteException
- import javax.ejb.CreateException
- import javax.ejb.FinderException
- import java.util.Collection
- public interface AccountHome extends
javax.ejb.EJBHome - //create methods
- Account create (String lastName, String
firstName) throws RemoteException, -
CreateException, BadNameException - Account create (String lastName) throws
RemoteException, CreateException - // find methods
- Account findByPrimaryKey (AccountKey primaryKey)
throws RemoteException, -
FinderException - Collection findInActive(Date sinceWhen)
- throws RemoteException, FinderException,
BadDateException
58Account Interface
- import java.rmi.RemoteException
- public interface Account extends
javax.ejb.EJBObject - BigDecimal getBalance() throws RemoteException
- void credit(BiGDecimal amount) throws
RemoteException - Void debit(BigDecimal amount) throws
RemoteException, -
InSufficientFundsException -
59AccountBean class
- public class AccountBean implements
javax.ejb.EntityBean - // life cycle methods from home interface
- public AccountKey ejbCreate (String latName,
String firstName) throws - public AccountKey ejbCreate(String lastName)
throws - public AccountKey ejbFindByPrimaryKey(AccountKey
primarykey) - Public Collection ejbFindInactive( Data
sinecWhen).. - // business methods from remote interface
- public BigDecimal getBalance() .
- public void credit(BigDecimal amt)
- Public void debit(BigDecimal amt) throws
InsufficientFundException . - // container callbacks from EntityBean container
- public ejbRemove( ) throws RemoveException
- public void setEntityContext(EntityContext ec)
- public unsetEntityContext(EntityContext ec)
- public void ejbActivate()
- public void ejbLoad() .
- public void ejbStore() .
60Deployment Descriptor
-
- ltentity-beangt
- ltejb-namegtAccountEJBlt/ejb-namegt
- lthomegtcom.wombat.AccopuntHomelt/homegt
- ltremotegtcom.wombat.Accountlt/remotegt
- ltejb-classgtcom.wombat.AccountBeanlt/ejb-classgt
- ltpersistence-typegtBeanlt\persistence-typegt
- ltprimary-key-classgtcom.wombat.AccountKeylt/prim
ary-key-classgt - lt/entity-beangt
-
- ltcontainer-transactiongt
- ltmethodgt
- ltejb-namegtAcoountEJBlt/ejb-namegt
- ltmethod-namegtlt/method-namegt
- lt/methodgt
- lttrans-attributegtrequiredlt/trans-attributegt
- lt/container-transactiongt
-
61(No Transcript)
62Empaquetado
- Una vez proporcionados los componentes, deben
empaquetarse en un archivo EJB JAR (módulo que
guarda al EB). - Este archivo es portable y puede ser empleado en
diversas aplicaciones. - Para una aplicación J2EE se ensamblan uno o
varios módulos
63Step 1 Retrieve Home Object reference using JNDI
EJB Container/Server
Client code As servlets, applets
Enterprise Beans
Home Object
1 Retrieve HomeObject Reference
2 Return Home Object Ref.
EJB Object
Remote interface
JNDI
64Step 2 Retrieve EJBObject using Home Interface
and Objects
65Step 3 Invoke Business Methods Using Remote
Interface and EJB Objects
EJB Container/Server
Client code As servlets, applets
Transaction, Security, Persistence services
5 return result
2 call middleware API
1 call a method
EJB Object
4 method returns
Enterprise Bean
Remote interface
3 call a bean
66Contents of an Enterprise Bean
- Interfaces The remote and home interface for
remote access. Local and local home accesses for
local access. - Enterprise bean class Implements the methods
defined in the above interfaces. - Deployment descriptor An XML file that specifies
information about the bean such as its type,
transaction attributes, etc. - Helper classes non-bean classes needed by the
enterprise bean class such as utility and
exception classes.
67Naming Conventions
68Más información
- http//java.sun.com/products/ejb/docs.html
- http//java.sun.com/products/ejb