# JavaBeans Enterprise

## Paso 5: Crear el Fichero `ejb-jar`

Una de las grandes ventajas de los JavaBeans Enterprise es la habilidad de empaquetar y distribuir la lógica del lado del servidor de la misma forma portable que los componentes GUI. En este paso los ficheros fuente procedentes de los pasos anteriores son compilados y empaquetados en un fichero ejb-jar. Completando los siguientes pasos produciremos el fichero Demo.jar ejb-jar, que estará listo para el despliegue o instalación en el Contenedor de JavaBeans Enterprise.

1. Compilar los ficheros .java
2. Crea el Descriptor de Desarrollo
3. Asegurarnos de que tenemos todas las piezas
4. Crear el fichero ejb-jar

### 1. Compilar los ficheros .java

Ejecutamos javac sobre los ficheros que acabamos de crear, es decir, los interfaces remoto y home, y el propio bean JavaBeans Enterprise.

>       javac ejb/demo/DemoHome.java
>       javac ejb/demo/Demo.java
>       javac ejb/demo/DemoBean.java

### 2. Crer el Descriptor de Desarrollo

Nota: Desarrollo es el término en JavaBeans Enterprise para instalar los componentes JavaBeans dentro de un contenedor JavaBeans Enterprise.

El papel del descriptor de desarrollo es permitir que el desarrollador del Bean personalice muchas de las propiedades del Bean antes de desplegarlo. El descriptor de desarrollo se describe en la especificación de JavaBeans Enterprise (sección 15.2) como un ejemplar de javax.ejb.deployment.SessionDescriptor o javax.ejb.deployment.EntityDescriptor. En el ejemplo DemoBean, es un ejemplar de javax.ejb.deployment.SessionDescriptor. Abajo hay un ejemplo del fichero de texto de entrada a las utilidades de WebLogic que genera el ejemplar serializado de este descriptor de desarrollo.

Observa que la metodología para crear el descritor de desarrollo no está especificada, por eso las herramientas usadas para desplegar los JavaBeans Enterprise podrían aparecer y actuar de forma diferente unos de otros, sin afectar a las propias habilidades del propio bean muti-plataforma.

Este ejemplo continúa con la creacción de DeploymentDescriptor con las herramientas de WebLogic. La implementación del servidor de Bea WebLogic ofrece versiones para la línea de comandos y GUI. Por eso para desplegar el JavaBean Enterprise usando las herramientas de la línea de comandos, envíamos estos comandos:

    java weblogic.ejb.utils.DDCreator -dir ejb/demo
    ejb/demo DeploymentDescriptor.txt

Esto creará DemoBeanDD.ser en el directorio ejb/demo.

Un ejemplo del fichero de texto DeploymentDescriptor.txt como entrada para las herramientas de Bea WebLogic: (fuente):

    (SessionDescriptor
    ; This file must start with SessionDescriptor or
    ; EntityDescriptor

    ; Indicate the name which the bean will be bound
    ; into the JNDI name as
    beanHomeName                    demo.DemoHome

    ; The enterprise Java Bean class (see step 4)
    enterpriseBeanClassName         ejb.demo.DemoBean

    homeInterfaceClassName          ejb.demo.DemoHome
    ; The home interface implemented by a class
    ; generated by the container provided tools
    ; see step 3

    remoteInterfaceClassName        ejb.demo.Demo
    ; See step 2

    isReentrant                     false
    ; Always false for session beans

    stateManagementType             STATELESS_SESSION
    ; Either STATELESS_SESSION or STATEFUL_SESSION.
    ; DemoBean is a stateless session bean

    sessionTimeout                  5
                                    ; seconds

    (controlDescriptors
    ; This section decides the run-time properties when
    ; a method is called. The DEFAULT sub-section applies
    ; to all methods, but can be overridden on a per-method
    ; basis, similar to the "accessControlEntries" above.
      (DEFAULT
         isolationLevel           TRANSACTION_SERIALIZABLE

         transactionAttribute     TX_REQUIRED

         runAsMode                CLIENT_IDENTITY
      )
      ; end isolationLevel

    )
    ; end controlDescriptors

    (environmentProperties

      maxBeansInFreePool          100

    )
    ; end environmentProperties
    )
    ; end SessionDescriptor

Nota: Este ejemplo es para el servidor BEA Weblogic que usa punto y coma (;) para líneas de comentario.

### 3. Crear el Manifiesto

El manifiesto lo genera automáticamente la utilidad jar, pero tomará una plantilla, por eso crear un fichero de texto (por ejemplo, ejb/demo/manifest.txt) con los siguientes contenidos. Puedes referirte a la sección sobre el empaquetado del Bean para ver como se usa este fichero de texto.

Para una descripción del fichero de manifiesto, puedes ver la Sección 15,3 de la Espcificación de JavaBeans Enterprise.

        Name: ejb/demo/DemoBeanDD.ser
        Enterprise-Bean: True

### 4. Asegurarnos de que Tenemos todas las Piezas

Aquí están las piezas que el desarrollador y proveedor de JavaBeans Enterprise necesita suministrar para crear un fichero ejb-jar válido, es decir, el bean JavaBean Enterprise:

- Las clases del bean Enterprise + cualquier otra clase de las que dependa el Bean (Paso 4).
- El interface remoto del Bean Enterprise (Paso 2).
- El interface home del Bean Enterprise (Paso 3).
- Un descriptor de desarrollo (ver arriba).
- Un ejemplar de java.util.Properties, si lo necesita el Bean.
- Un fichero manifiesto que identifica los descriptores de desarrollo del fichero ejb-jar.

El proveedor de Bean JavaBeans Enterprise es responsable de poner todas estas clases dentro del fichero ejb-jar, pero se espera que la mayoría de los proveedores de contenedores y servidores proporcionen herramietnas para hacer este empaquetado y ensamblaje.

### 5. Crear el Fichero ejb-jar

Para el ejemplo juntamos todas las piezas para crear un fichero jar llamando Demo.jar. Se espera que las futuras herramietnas hagan el empaquetado y la generación del fichero ejb-jar mucho más sencillas. Podemos imaginar un ayudante que nos guie y que chequee las dependencias.

Para crear el fichero ejb-jar Demo.jar para el ejemplo, podemos asumir que las piezas del fichero jar están para un directorio llamado ejb. Simplemente creamos un fichero jar con la estructura de este directorio

Notas: Usamos la bandera m para empaquetar y el fichero ejb/demo/manifest.txt como una plantilla para el manifiesto. No es necesario poner el fichero manifest.txt dentro del fichero jar.

    jar cvfm Demo.jar ejb/demo/manifest.txt ejb/demo/*.class \
    ejb/demo/*.ser

Al inspeccionar el fichero Demo.jar deberiamos ver una salida similar a esta:

      jar tf Demo.jar

      META-INF/MANIFEST.MF
      ejb/demo/Demo.class
      ejb/demo/DemoBean.class
      ejb/demo/DemoHome.class
      ejb/demo/DemoBeanDD.ser

Como puedes ver, no hay nada demasiado especial sobre el fichero ejb-jar.

Ozito