2 enterprise javabeans - it.uc3m.es · 2005 software de comunicaciones (c) uc3m natividad martínez...
TRANSCRIPT
Parte II: Java 2 Enterprise Edition
Enterprise JavaBeans
Ignacio Ramos Zapata
Departamento de Ingeniería Telemática
Universidad Carlos III de Madrid
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 2
Introducción a Enterprise JavaBeans
� Tecnología central de J2EE para la creación de lógica y datos de negocio� Simplifica el desarrollo de componentes de negocio transaccionales, escalables y
portables (independientes de la plataforma)– Gracias a una serie de servicios que permiten que el desarrollador se concentre en la lógica de
negocio
� Une los distintos APIs de J2EE en una arquitectura integradora. – Componentes que residen en el servidor – Base de las aplicaciones distribuidas escritas en Java
� La especificación EJB describe un modelo de programación para componentes consistente en convenciones, interfaces y excepciones
� Establece contratos entre el diseñador de componentes EJB y el proveedor del servidor de aplicaciones, referentes al desarrollo, instalación y soporte de ejecución para los componentes:
– Roles y actividades de los distintos diseñadores de aplicaciones– Tipos de EJBs y su dominio de aplicación– Elementos que componen un EJB– Interfaces entre los EJB y otros elementos de la aplicación, principalmente los clientes– Directivas para los proveedores de servidores y contenedores EJB para garantizar la
independencia respecto a la plataforma
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 3
Qué son los Enterprise JavaBeans?
� Componentes que se ejecutan en el servidor, usadoscomo parte de aplicaciones corporativas distribuidas.
� Cada bean encapsula parte de la lógica de negociode la aplicación
� Se pueden invocar desde distintos tipos de clientes: EJBs, servlets, clientes de aplicación, etc.
� En tiempo de ejecución, residen en un contenedor de EJB: servicios de seguridad, transacción, instalación(deployment), concurrencia, y gestión del ciclo de vida
� Una aplicación puede tener uno o varios EJBs en unoo varios contenedores EJB
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 4
Instalación típica J2EE
EIS
Bases de datos
Aplicaciones legado
Sistemas ERP
EJB Contenedor
EnterpriseBeans
Web Contenedor
JSP
JSP
Servlets
Servlets
EnterpriseBeans
EnterpriseBeans
Servidor EJB
JDBC
Messaging (EJB 2.0: JMS, EJB 2.1: +JAXM, …)
ClienteWeb
Browser
Aplicac. Applet,ClienteCORBA
ClienteServicios
Web JAX RPC (EJB 2.1)
HTTP
RMI-IIOP Con
ecto
res
Fire
wal
l
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 5
Entorno Básico
� Un cliente puede acceder a un EJB desde la misma JVM o desde otra, usando una interfaz remota.
� El componente EJB Home es similar a una factoría de objetos (crear, encontrar o borrar instancias )
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 6
Ejemplo aplicación con múltiples EJBs
Asociación unidireccional
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 7
Aplicación distribuida en múltiples contenedores
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 8
Arquitectura EJB
EJB Contenedor
JNDI JDBC JTA JMS Enterprise Services
Inte
rface
s de
com
pone
ntes
EJB
EJB Server
Enterprise Beans
ComponentesEnterprise Beans
instalados
InstanciasBean
Clientes
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 9
Elementos de la arquitectura EJB
� Servidor EJB: proporciona a lo contenedores la conexión con la infraestructura de comunicaciones, alta disponibilidad y balanceo de carga así como otras funciones de administración: gestión de errores, vigilancia de threads que corren en el contenedor, gestión de conexiones etc …
� Contenedor EJB: ofrece un entorno de ejecución a los componentes instalados: manejo de las instancias-Bean, control del ciclo de vida y acceso a los servicios Enterprise estándarEl conjunto Servidor EJB y Container EJB proporciona un servidor de aplicaciones
� Enterprise Beans: son los componentes de servidor en los que está encapsulada la lógica de negocio. Hay tres tipos:– Session Beans representan procesos de negocio– Entity Beans representan datos de negocio– Message-Driven Beans procesan mensajes asíncronos
� Clientes: a EJB pueden acceder clientes basados en browser, clientes Java, Servlets, clientes CORBA u otros Entreprise Beans
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 10
Entidades de negocio
� Objeto de negocio que representa informaciónmantenida por la empresa– Estado, mantenido en la BD (persistente)
– Ejemplos: cliente, pedido, cuenta, empleado
– Las reglas de negocio asociadas con una entidad• Restringen los valores de su estado (Ej: código postal 5
cifras)• Mantienen relaciones entre entidades (Ej: un cliente con
varios pedidos)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 11
Procesos de negocio
� Objeto de negocio que encapsula unainteracción de un usuario con una entidad de negocio– Actualiza el estado de una entidad de negocio
– Puede tener su propio estado• Estado persistente: proceso en varios pasos realizado
por distintos actores: proceso de negocio colaborativo– Ejemplo: procesamiento de una solicitud de préstamo
• Estado transistorio: proceso de negocio completado porun actor durante una conversación: proceso de negocioconversacional
– Ejemplo: sacar dinero de un cajero automático
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 12
Reglas de negocio
� Distribuidas entre los componentes queimplementan las entidades y procesos de negocio– En función de si la regla aplica a la entidad o al
proceso
– Ejemplo para una entidad: el balance de unacuenta no puede ser negativo (es independientedel proceso que lo cause)
– Ejemplo para un proceso: no se pueden sacar másde 500€ de un cajero automático (independientede la entidad Cuenta)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 13
Tipos de EJBs
� Componentes de servidor (especificación EJB), implementa la lógica de negocio
� Entity Beans: – modelan conceptos de negocio como objetos persistentes asociados a
datos– Soporte pasivo de información. Ofrece métodos para las operaciones sobre
los datos (ej. Cuenta bancaria, producto, pedido…)– Llamada síncrona
� Session Beans:– Representan procesos ejecutados en respuesta a una solicitud del cliente
(ej. Transacciones bancarias, cálculos, realización de pedidos…)– Típicamente usan Entity Beans para el procesado de datos– Llamada síncrona
� Message-Driven Beans: – Representan procesos ejecutados como respuesta a la recepción de un
mensaje– Llamada asíncrona
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 14
Entity Beans
� Modelan conceptos y objetos de negocio cuyos datos son persistentes
� Pueden ser usados por varios clientes de forma conjunta y simultánea
� Identidad visible externamente: clave primaria
� Larga duración (tanto como los datos asociados): incluso sobreviven caídas del ordenador
� Persistencia en Entity Beans: gestionada por beans o por contenedor, diferencia no visible para el cliente
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 15
Session Beans
� Realizan la parte del servidor de la lógica de negocio de una aplicación
� Cuando un cliente realiza una llamada a un Session Bean se crea una instancia (Objeto Session) asociada a ese cliente. El objeto Session se borra o libera al acabar el proceso del cliente
� Stateless Session Beans (sin estado): – No almacenan datos del cliente (sólo utilizan los datos
pasados como parámetros)– Todos los objetos Session de un bean poseen la misma
identidad
� Stateful Session Beans (con estado):– Tienen estados dependientes del cliente– El estado no es persistente, se pierde cuando el objeto
Session se deja de utilizar– Cada objeto Session tiene distintas identidades
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 16
Tipos de EJBs (II)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 17
Entity Bean vs. Stateful Session Bean
Estado almacenado en BD. Otros programas (query SQL) pueden acceder al estado
El contenedor mantiene el estado del objetointernamente. Estadoinaccesible a otrosprogramas
Externalización de estado
Puede ser compartido pormúltiples clientes. Un clientepuede pasar una referencia al objeto a otro cliente
Sólo puede ser usado porun cliente
Compartición objeto
Mantenido en BD. Mantenido por el contenedor en memoriaprincipal.
Estado objeto
Entity BeanSession BeanÁrea funcional
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 18
Entity Bean vs. Stateful Session Bean
Sobrevive el fallo y rearranquedel contenedor. El clientepuede usar las mismasreferencias
No se garantiza quesobreviva un fallo y rearranque del contenedor. Las referencias al objetosesión pueden ser inválidastras el fallo
Recuperación de fallos
Estado cambiado de forma transaccional y es recuperable
El estado puede ser sincronizado mediante unatransacción, pero no esrecuperable
Transacciones
Entity BeanSession BeanÁrea funcional
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 19
Elección de Entity Bean o Session Bean
� Las entidades de negocio se implementantípicamente como Entity Beans
� Los procesos de negocio conversacionales se implementan típicamente como Session Beans
� Los procesos de negocio colaborativos se implementan típicamente como Entity Beans– El estado representa los pasos intermedios
realizados
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 20
Message-driven Beans
� Receptores de mensajes� Intermediario entre cliente emisor y Message-driven
Bean: servicio de mensajería� Diferencia con Session y Entity Beans: Comunicación
asíncrona en lugar de llamada síncrona a métodos (el cliente se bloquea hasta el fin de la llamada)
� Emisor y Message-driven Beans son mutuamente anónimos
� Los Message-driven Beans no poseen identidad– No pueden mantener información del estado del emisor,
como los stateless Session Beans
� Los mensajes entrantes son capturados por el contenedor, quien los redirige a una instancia de Bean
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 21
Ejemplo Enterprise Beans
Cliente A
Cliente B
Cliente CServidor EJB
Contenedor EJBStateless Session Bean
Instance Pool
Entity Bean
Entity Bean
Entity Bean
StatefulSession Bean:
Instance 1 StatefulSession Bean:
Instance 1
DatabaseTable
Línea 1
Línea 2
Línea 3
Línea n
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 22
Estructura de los Enterprise Beans
� Clase Enterprise Bean: implementa– métodos de negocio
– métodos de ciclo de vida (llamados directamente por el contenedor)
� API vista-cliente: define– Home interface
• métodos create, remove y find
– Remote interface• Métodos de negocio
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 23
Estructura de los Enterprise Beans
� Deployment descriptor: Documento XML declara:– Información de los EJB y su entorno
• Nombre del EJB• Nombre de los interface Home y Remote• Nombre de la clase EJB• Tipo del EJB• Servicios que el EJB espera de su contenedor, como
transacciones• Entradas del entorno EJB (dependencias con otros EJBs
y gestores de recursos)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 24
Vista cliente sobre Session y Entity Beans
� Los session y entity beans ofrecen distintos interfaces a los clientes
� Los messege-driven beans no tienen clientes propiamente dichos sino que reaccionan a mensajes, por lo que no ofrecen interfaces sino que anuncian su canal de mensajes (JMS-Topic o JMS-Queue)– Distinto modo de programación y comportamiento que los
session y entity beans
� Importante para los clientes:– Servicio de nombres y directorios a través de JNDI para
localización de EJBs
– Protocolo RMI-IIOP para llamadas remotas a métodos
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 25
Características de la vista del cliente
� Home Interface: Crear y borrar beans (session y entity beans), encontrar (entity beans)
� (Remote) Component Interface: Exporta los métodos de negocio
� Estos interfaces son implementados por Objetos-Home y Objetos-EJB: vista del cliente sobre los session y entity beans– Interfaces creados por el diseñador– Durante la instalación, el contenedor genera las clases que implementan los
interfaces
� Intercepción: el cliente nunca opera directamente sobre las instancias de beans sino sobre objetos generados por el contenedor– El contenedor controla las llamadas y realiza pre- y post-procesado– Proporciona el entorno de ejecución a los EJBs llamados
• Ej: Control de permisos, enlace dinámico del objeto-bean a las instancias-bean, generación de instancias-bean si es necesario (Just-in-Time-Activation), o creación previa y gestión (Pooling)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 26
Esquema vista de cliente
Cliente B
Contenedor EJB
Instancia Bean
Instancia Bean
Objeto Home
Objeto EJB
Home Interface
Remote Interface
Create/find, remove
Métodos de negocio
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 27
Patrón de diseño proxy/broker
Objetocliente
Proxy ladocliente (Stub)
Proxy ladoservidor (Skeleton)
Objetoproductor
1. Petición 2. Petición
3. Respuesta4. Respuesta
Red
Broker BrokerCoordinación dela comunicación
Sistema de transporte (ej. IIOP)
Cliente Servidor
Protocolo de transporte común
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 28
Ejemplo: Account EJB
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 29
Ejemplo: Home 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 methodsAccount create(string lastName, String firstName)
throws RemoteException, CreateException, BadNameException;
Account create(string lastName)throws RemoteException, CreateException;
...
// find methodsAccount findByPrimaryKey(AccountKey primaryKey)
throws RemoteException, FinderException;Collection findInActive(Date sinceWhen)
throws RemoteException, FinderException, BadDateException;
...}
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 30
Ejemplo: EJBHome Interface
import java.rmi.RemoteException;
public interface EJBHome extends java.rmi.Remote {void remove(Handle handle)
throws RemoteException, RemoveException;void remove(Object primaryKey)
throws RemoteException, RemoveException; EJBMetaData getEJBMetaData()
throws RemoteException; HomeHandle getHomeHandle()
throws RemoteException;}
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 31
Ejemplo: Remote 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;}
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 32
Ejemplo: EJBObject Interface
import java.rmi.RemoteException;
public interface EJBObject extends java.rmi.Remote {public EJBHome getEJBHome()
throws RemoteException;public Object getPrimaryKey()
throws RemoteException;public void remove()
throws RemoteException, RemoveException; public Handle getHandle()
throws RemoteException;boolean isIdentical (EJBObject obj2)
throws RemoteException;}
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 33
Ejemplo: Clase EJB
import java.rmi.RemoteException;public class AccountBean implements javax.ejb.EntityBean {
// life cycle methods from home interfacepublic AccountKey ejbCreate(String lastName, String firstName)
throws CreateException, BadNameException { ... };public AccountKey ejbCreate(String lastName)
throws CreateException { ... }public void ejbPostCreate(String lastName, firstName)
throws CreateException, BadNameException { ... };public void ejbPostCreate(String lastName)
throws CreateException { ... }public AccountKey ejbFindByPrimaryKey(AccountKey primaryKey)
throws FinderException { ... }public Collection ejbFindlnActive(Date sinceWhen)
throws FinderException, BadDateException { ... }...
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 34
Ejemplo: Clase EJB (cont.)
...// business methods from remote interfacepublic BigDecimal getBalance() { ...}public void credit(BigDecimal amount) { ...}public void debit(BigDecimal amount)
throws InsufficientFundsException { ...}...// container callbacks from EntityBean interfacepublic ejbRemove() throws RemoveException { ...}public void setEntityContext(EntityContext ec) { ...} public void unsetEntityContext(EntityContext ec) { ...} public void ejbActivate() { ...}public void ejbPassivate() { , " }public void ejbLoad() { ., .}public void ejbStore() { ...}
}
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 35
Ejemplo: Deployment descriptor
<entity-bean> <ejb-name>AccountEJB</ejb-name> <home>com.wombat.AccountHome</home> <remote>com.wombat.Account</remote><ejb-class>com.wombat.AccountBean</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>com.wombat.AccountKey</prim-key-class>...
</entity-bean>...<container-transaction>
<method><ejb-name>AccountEJB</ejb-name> <method-name>*</method-name>
</method><trans-attribute>Required</trans-attribute>
</container-transaction>...
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 36
Contenedor EJB
Entorno de ejecución para los componentes EJB instalados
� Administración de instancias: – Gestión del ciclo de vida de las instancias – Los estados y procesos del ciclo de vida dependen del tipo
de Bean
� Acceso remoto:– El servidor EJB proporciona protocolos de comunicación
para el acceso remoto a objetos distribuidos (RMI-IIOP)– El interfaz y semántica de llamada deben seguir las
convenciones de Java RMI– El protocolo de comunicación debe soportar IIOP (según
especificación CORBA)– La gestión de la distribución de las llamadas remotas es
tarea del contenedor
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 37
Contenedor EJB (cont.)
� Seguridad:– Autorización de acceso a componentes: concepto declarativo basado en
roles: En el Deployement Descriptor (descriptor de instalación) se definen roles de usuario y sus derechos de acceso a los métodos de los componentes
– El instalador (deployer) asigna roles a los usuarios, la gestión de usuarios y roles la realiza el servidor EJB, el control de acceso el contenedor
� Persistencia:– Las instancias de Entity Beans en la memoria de trabajo pueden estar
enlazadas con datos de negocio de cualquier EIS. El contenedor garantiza la consistencia de datos (carga y almacenamiento periódicos)
• Persistencia gestionada por Beans: la instancia usa las conexiones JDBC a bases de datos proporcionadas por el contendor
• Persistencia gestionada por contenedor: en general se soportan bases de datos relacionales
• El medio de persistencia depende del contenedor y es independiente del Bean
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 38
Contenedor EJB (cont.)
� Transacciones:– Secuencia de acciones (accesos a datos) ejecutadas de
forma “atómica” (no interrumpida), evitando problemas por acceso concurrente a datos, que se puede “deshacer” por completo en caso de fallo
– Coordinación de transacciones mediante un monitor de transacciones
– El contenedor proporciona los protocolos para manejo de transacciones (por ejemplo 2-Phases-Commit-Protocol)
– El contendor proporciona al Bean una interfaz única JTA (Java Transaction API)
– Las transacciones pueden ser empezadas y terminadas por el Bean o dejadas al control del contenedor (especificando en el Deployment Descriptor qué métodos deben ser protegidos por transacciones)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 39
Contenedor EJB (cont.)
� Servicio de nombres y directorios:– Asociación de referencias a objetos con nombres en una
estructura de directorios jerárquica (JNDI API: Jave Naminigand Directory Interface)
– el contenedor asocia los Beans de forma automática, y proporciona además diversa información a los Beans en un directorio privado (Entorno)
� Mensajería: – El contendor proporciona a los beans acceso al servicio de
mensajería mediante el API JMS (Java Messaging Service): comunicación asíncrona de mensajes entre dos o más participantes mediante un sistema de colas de mensajes
– Los receptores de mensajes son los “Message-Driven Beans”, cualquier Enterprise Bean puede ser emisor
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 40
Herramientas de contenedor
� Elementos de una aplicación operativa:– EJBs (lógica de negocio)
– Contenedor (implementación de los servicios de nivel de sistema)
– Artefactos de contenedor:• Las herramientas del contenedor leen el deployment
descriptor y generan clases adicionales llamadasartefactos de contenedor (container artifacts)
� Los artefactos de contenedor permiten al contenedor inyectar los servicios de nivel de sistema (intercepción)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 41
Artefactos de contenedor
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 43
Llamada de un cliente: servicio de nombres
Cliente
Contenedor EJB
Ho
me
Stub
JND
IServicio de nombres
Ho
me
Objeto Home
1
2
3
bind
lookup
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 44
Llamada de un cliente: creación Entity Bean
Cliente Contenedor EJB
Ho
me
Stub
Ho
me
Objeto Home
12
3
createinsert
Rem
ote
Objeto EJB
InstanciaEntity Bean
JDB
C
Base de datos
Identidad
Rem
ote
Stub
Identidad
4
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 45
Llamada a un método de negocio
Cliente Contenedor EJB
InstanciaEntity Bean
JDB
C
Base de datos
IdentidadIdentidad
1
JTA Monitor
Transacciones
2
3
4
5
6
Rem
ote
Objeto EJBRem
ote
Stub incPrecio
Empezar y terminartransacción
Comparación datos(cargar/almacenar)
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 46
Escenarios� Escenario Desarrollo:
– Conocimientos en el dominio de aplicación– Diseñan los componentes EJB en forma de un archivo Java: clases
compiladas y los interfaces de los componentes, junto con un “Descriptor de aplicación” en XML (características y requisitos de ejecución de los componentes)
� Escenario Ensamblaje:– Conocimientos en el dominio de aplicación– Utiliza los componentes EJB para una aplicación concreta, enlazándolos de
forma adecuada, en un archivo común “Módulo EJB” o “Unidad de instalación”
– Añade código de integración para el control de los EJB y la gestión de entrada/salida
� Escenario Instalación: – Pasos para la instalación de una “Unidad de instalación” en una plataforma
objetivo– Experto en un entorno de sistema, en el servidor y containers
Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata2005 47
Pasos realización e instalación EnterpriseJavaBeans
1. Desarrollo código fuente del Enterprise Bean: Interfaz Home local y remoto, interfaz de componente local y remoto, y clase Bean
2. Creación del Deployment Descriptor (ejb-jar.xml)3. Compilación del código fuente Java ( -> ficheros .class)4. Creación del fichero .jar del Enterprise Bean: con la herramienta jar, contiene
los .class y el deployment descriptor5. Instalación (Deployment) del fichero .jar en el Contenedor
1. Generación de la configuración de deployment (depende del servidor EJB)2. Anuncio del módulo EJB al Contenedor (depende del servidor EJB): puede ser copia
del fichero .jar en un directorio especial, o un proceso más complicado
6. Configuración del servidor EJB para el módulo EJB (depende del servidor EJB): preparación de conexiones a bases de datos, caché, thread-pools, etc.
7. Arranque del Contenedor EJB8. Opcional: desarrollo y arranque de un cliente: los ficheros .class o .jar deben
estar en el path. El enlace con el servidor EJB es específico del producto