Desarrollo de enterprise beans
Con el producto se suele dar una de las dos situaciones de desarrollo de enterprise beans. El primero es la línea de mandatos mediante Ant, Make, Maven o herramientas similares. El segundo es un entorno de desarrollo y compilación basado en IDE. Los pasos de este artículo están enfocados al desarrollo sin un IDE.
Antes de empezar
- Antes de desarrollar los beans de entidad con la persistencia gestionada por contenedores (CMP), consulte el tema sobre control de concurrencia.
- Antes de desarrollar beans de entidad con CMP, lea el tema Control de simultaneidad. Recuerde que los módulos EJB 3.x no dan soporte a los beans de entidad. Debe continuar colocando los beans de entidad en los módulos EJB de nivel 2.x.
Acerca de esta tarea
- Puede utilizar una de las herramientas IDE disponibles que generan automáticamente
partes importantes del código de los enterprise beans y contienen herramientas integradas
para el empaquetado y la prueba de los enterprise beans. El producto Rational Application
Developer es el IDE recomendado.
Añada raíz_instalación/dev/JavaEE/j2ee.jar a la vía de acceso de construcción del proyecto IDE para solucionar las dependencias de compilación en las nuevas clases de la API EJB 3.x. El código le ayuda a trabajar con se añade este archivo JAR a la vía de acceso de compilación del proyecto. Si define un servidor (consulte la perspectiva J2EE), apunte el servidor al directorio de instalación del producto. Al crear un proyecto relacionado con Java EE en Rational Application Developer, el proyecto añade automáticamente raíz_instalación/dev/JavaEE/j2ee.jar. a la vía de acceso de compilación del proyecto.
- Si ha decidido desarrollar enterprise beans sin un IDE, necesita como mínimo un editor ASCII: También
puede utilizar una herramienta de desarrollo de Java que no dé soporte al desarrollo de enterprise beans. Puede utilizar las herramientas disponibles en JDK (Java Software Development Kit) y en este producto
para
ensamblar, probar y desplegar beans.
Al igual que la herramienta de ensamblaje, un entorno de compilación de línea de mandatos Java EE estándar requiere pocas modificaciones para utilizar los módulos EJB 3.x. Como sucede con los patrones de desarrollo de aplicaciones Java EE, debe incluir el archivo j2ee.jar ubicado en el directorio install_root/dev/JavaEE a la vía de acceso del clases del compilador. En el directorio install_root/samples/src/TechSamp puede encontrar un ejemplo de un entorno de compilación de línea de mandatos utilizando Ant.
Los pasos siguientes soportan principalmente el segundo planteamiento, el desarrollo sin IDE.
Procedimiento
Ejemplo: Utilización de un bean de entidad de sólo lectura
Este caso de uso y los ejemplos muestran cómo escribir una aplicación Enterprise JavaBeans (EJB) que utilice un bean de entidad de sólo lectura.
- Ejemplo de uso
Un cliente tiene una base de datos de precios de catálogo e información de tarifas de envío que se actualiza a diario no más tarde de las 10:00 pm, hora local (22:00 en formato de 24 horas). Se desea escribir una aplicación EJB que tenga acceso de sólo lectura a estos datos. Es decir, esta aplicación nunca actualiza la base de datos de precios. La actualización se realiza a través de alguna otra aplicación.
- Ejemplo
La interfaz local del bean de entidad del cliente podría ser:
public interface ItemCatalogData extends EJBLocalObject { public int getItemPrice(); public int getShippingCost(int destinationCode); }
El código del método SessionBean sin estado (se supone que es un TxRequired) que invoca este EntityBean para calcular el coste total incluido el envío, se parecería a:
..... // Se producen algunos pasos transaccionales antes de este punto, como la eliminación del artículo del // inventario, etc. // Ahora se obtiene el precio de este artículo y se empieza a calcular el coste total en el comprador ItemCatalogData theItemData = (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber); int totalcost = theItemData.getItemPrice(); // ... algún otro proceso, etc. provisional // ... // ... // Se añaden los costes de envío totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
Durante el ensamblaje de la aplicación, el cliente establece los parámetros de colocación en memoria caché del EJB para este bean como se detalla a continuación:- ActivateAt = ONCE
- LoadAt = DAILY
- ReloadInterval = 2200
Deprecated feature: Los atributos reloadInterval y reloadingEnabled de las extensiones del descriptor de despliegue IBM, que incluye tanto la extensión de archivo WAR (WEB-INF/ibm-web-ext.xmi) como la extensión de aplicación (META-INF/ibm-application-ext.xmi) estaban en desuso. depfeat
En la primera llamada al método getItemPrice() después de las 22:00 horas todas las noches, el contenedor de EJB recarga la información de precios de la base de datos. Si el reloj marca las 22:00 horas entre la llamada a getItemPrice() y getShippingCost(), el método getShippingCost() aún devuelve el valor que tenía antes de que se hubieran podido efectuar cambios en la base de datos a las 22:00 horas, puesto que la primera invocación al método de esta transacción se produjo antes de las 22:00 horas. De este modo, el precio del artículo y el coste de envío utilizado permanecen sincronizados entre sí.
Qué hacer a continuación
Ensamble los beans en uno o más módulos EJB. Consulte el tema sobre cómo ensamblar módulos EJB, o cómo ensamblar módulos EJB 3.x si utiliza beans EJB 3.x.