Parte II: Java 2 Enterprise Edition Enterprise JavaBeans Ignacio Ramos Zapata Departamento de Ingeniería Telemática Universidad Carlos III de Madrid [email protected] 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 2 Qué son los Enterprise JavaBeans? Ÿ Componentes que se ejecutan en el servidor, usados como parte de aplicaciones corporativas distribuidas. Ÿ Cada bean encapsula parte de la lógica de negocio de 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 uno o varios contenedores EJB 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 3 Instalación típica J2EE EIS Web Contenedor Bases de datos JSP Aplicac. Applet, Cliente CORBA Servlets JDBC JSP Enterprise Beans Aplicaciones legado Enterprise Beans JAX RPC (EJB 2.1) Enterprise Beans RMI-IIOP Messaging Conectores Cliente Servicios Web EJB Contenedor HTTP Firewall Cliente Web Browser Servlets Sistemas ERP (EJB 2.0: JMS, EJB 2.1: +JAXM, …) Servidor EJB 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 4 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 ) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 5 Ejemplo aplicación con múltiples EJBs Asociación unidireccional 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 6 Aplicación distribuida en múltiples contenedores 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 7 Arquitectura EJB JNDI JDBC JTA JMS Enterprise Services Clientes Interfaces de componentes EJB EJB Contenedor Enterprise Beans Instancias Bean Componentes Enterprise Beans instalados EJB Server 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 8 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ándar El 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 9 Entidades de negocio Ÿ Objeto de negocio que representa información mantenida 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) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 10 Procesos de negocio Ÿ Objeto de negocio que encapsula una interacció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 por un actor durante una conversación: proceso de negocio conversacional – Ejemplo: sacar dinero de un cajero automático 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 11 Reglas de negocio Ÿ Distribuidas entre los componentes que implementan 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 una cuenta no puede ser negativo (es independiente del proceso que lo cause) – Ejemplo para un proceso: no se pueden sacar más de 500€ de un cajero automático (independiente de la entidad Cuenta) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 12 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 13 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 14 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 15 Tipos de EJBs (II) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 16 Entity Bean vs. Stateful Session Bean Área funcional Session Bean Entity Bean Estado objeto Mantenido por el contenedor en memoria principal. Mantenido en BD. Compartición objeto Sólo puede ser usado por un cliente Puede ser compartido por múltiples clientes. Un cliente puede pasar una referencia al objeto a otro cliente Externalización de estado El contenedor mantiene el estado del objeto internamente. Estado inaccesible a otros programas Estado almacenado en BD. Otros programas (query SQL) pueden acceder al estado 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 17 Entity Bean vs. Stateful Session Bean Área funcional Session Bean Entity Bean Transacciones El estado puede ser sincronizado mediante una transacción, pero no es recuperable Estado cambiado de forma transaccional y es recuperable Recuperación de fallos No se garantiza que sobreviva un fallo y rearranque del contenedor. Las referencias al objeto sesión pueden ser inválidas tras el fallo Sobrevive el fallo y rearranque del contenedor. El cliente puede usar las mismas referencias 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 18 Elección de Entity Bean o Session Bean Ÿ Las entidades de negocio se implementan tí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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 19 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 20 Ejemplo Enterprise Beans Contenedor EJB Stateless Session Bean Instance Pool Cliente A Entity Bean Database Table Línea 1 Entity Bean Cliente B Stateful Session Bean: Instance 1 Línea 2 Entity Bean Línea 3 Línea n Stateful Session Bean: Instance 1 Cliente C Servidor EJB 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 21 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 22 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) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 23 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 24 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) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 25 Esquema vista de cliente Contenedor EJB Home Interface Objeto Home Create/find, remove Instancia Bean Cliente B Métodos de negocio Instancia Bean Objeto EJB Remote Interface 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 26 Patrón de diseño proxy/broker Cliente Red Servidor 1. Petición Objeto cliente 2. Petición Proxy lado cliente (Stub) Proxy lado servidor (Skeleton) 4. Respuesta Coordinación de la comunicación Objeto productor 3. Respuesta Broker Broker Protocolo de transporte común Sistema de transporte (ej. IIOP) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 27 Ejemplo: Account EJB 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 28 Ejemplo: Home Interface import import import import java.rmi.RemoteException; javax.ejb.CreateException; javax.ejb.FinderException; 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; ... } 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 29 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; } 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 30 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; } 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 31 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; } 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 32 Ejemplo: Clase EJB import java.rmi.RemoteException; public class AccountBean implements javax.ejb.EntityBean { // life cycle methods from home interface public 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 { ... } ... 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 33 Ejemplo: Clase EJB (cont.) ... // business methods from remote interface public BigDecimal getBalance() { ...} public void credit(BigDecimal amount) { ...} public void debit(BigDecimal amount) throws InsufficientFundsException { ...} ... // container callbacks from EntityBean interface public 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() { ...} } 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 34 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> ... 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 35 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 36 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 37 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) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 38 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 Naminig and 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 39 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 llamadas artefactos de contenedor (container artifacts) Ÿ Los artefactos de contenedor permiten al contenedor inyectar los servicios de nivel de sistema (intercepción) 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 40 Artefactos de contenedor 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 41 Objetos RMI-IIOP 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 42 Llamada de un cliente: servicio de nombres 2 lookup Home Contenedor EJB Objeto Home Cliente 3 Stub bind JNDI Home 1 Servicio de nombres 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 43 Llamada de un cliente: creación Entity Bean Contenedor EJB Stub 2 insert Objeto Home 4 Stub Remote Remote 3 Objeto EJB JDBC 1 create Home Home Cliente Base de datos Instancia Entity Bean Identidad Identidad 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 44 Llamada a un método de negocio Stub 1 incPrecio Objeto EJB Identidad 3 2005 Empezar y terminar transacción 6 4 Monitor Transacciones Instancia Entity Bean Identidad 5 Comparación datos (cargar/almacenar) Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata JDBC 2 JTA Contenedor EJB Remote Remote Cliente Base de datos 45 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 46 Pasos realización e instalación Enterprise JavaBeans 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 descriptor 5. 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 EJB 8. 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 2005 Software de Comunicaciones (c) UC3M Natividad Martínez Ignacio Ramos Zapata 47