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

Sólo beans Enterprise JavaBeans (EJB) 2.x: diseñe una aplicación J2EE y los enterprise beans que necesite.
  • Antes de desarrollar los beans de entidad con la persistencia gestionada por contenedores (CMP), consulte el tema sobre control de concurrencia.
Sólo beans EJB 3.x: diseñe una aplicación Java™ EE y los enterprise beans que necesite.
  • 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

Los dos procedimientos básicos para seleccionar herramientas para el desarrollo de enterprise beans son los siguientes:
  • 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

  1. Si fuera necesario, migre el código anterior existente a la versión obligatoria de la especificación EJB.

    Las aplicaciones escritas en la especificación de EJB versiones 1.1, 2.0 y 2.1 se pueden ejecutar sin modificaciones en el contenedor EJB 3.x.Consulte el tema sobre migración del código de enterprise bean a la especificación admitida.

  2. Escriba y compile los componentes del enterprise bean.
    • Como mínimo, un bean de sesión desarrollado con las especificaciones EJB 3.x requiere una clase de bean.
    • Como mínimo, un bean de sesión EJB 1.1 requiere una clase de bean, una interfaz de factoría y una interfaz remota. Un bean de entidad EJB 1.1 requiere una clase de bean, una clase de clave principal, una interfaz de factoría y una interfaz remota.
    • Como mínimo, un bean de sesión EJB 2.x requiere una clase de bean, una interfaz de factoría o local y una interfaz remota. Un bean de entidad EJB 2.x requiere una clase de bean, una clase de clave principal, una interfaz de factoría remota o local y una interfaz remota o local. Los tipos de interfaces van juntos: si implementa una interfaz local, debe definir también la interfaz de factoría local.
      Atención: La clase de la clave principal puede ser desconocida. Consulte el tema Clase de clave principal desconocida para obtener más información.
    • Los beans controlados por mensajes requieren sólo una clase de bean.
  3. Para cada bean de entidad, complete el trabajo para manejar las operaciones de persistencia.

    Para los módulos EJB 3.x, puede utilizar la especificación JPA (Java Persistence API) para desarrollar las entidades de persistencia POJO (Plain Old Java Object). Revise el tema API de persistencia Java para obtener más información. Si opta por desarrollar beans de entidad en especificaciones EJB anteriores, siga estos pasos:

    • Cree un esquema de base de datos para los datos persistentes de bean de entidad.
      • Para los beans de entidad con CMP, debe almacenar los datos persistentes de bean en una de las bases de datos admitidas. La herramienta de ensamblaje genera automáticamente el código SQL para crear tablas de bases de datos de los beans de entidad de CMP. Si los beans CMP necesitan correlaciones de bases de datos complejas, se le recomienda que utilice Rational Application Developer para generar código para las tablas de bases de datos. Para obtener más información acerca del uso de las herramientas de ensamblaje, consulte el Information Center de la herramienta de ensamblaje.
      • Para los beans de entidad con persistencia gestionada por bean (BMP), puede crear la base de datos y la tabla de base de datos utilizando las herramientas de base de datos o utilizar una base de datos y una tabla de base de datos existentes.

      Para obtener más información acerca de cómo crear bases de datos y tablas de bases de datos, consulte la documentación de base de datos.

    • (Sólo beans de entidad CMP para EJB 2.x)

      Definir consultas finder con EJB QL (EJB Query Language).

      Con EJB QL, puede definir buscadores en términos de campos CMP y relaciones gestionadas por contenedor, como se detalla a continuación:
      • Los buscadores públicos son visibles en la interfaz de factoría de bean. Implementados en la clase de bean, devuelven sólo interfaces remotas y tipos de colecciones.
      • Los buscadores privados, expresados como sentencias SELECT, se utilizan sólo dentro de clases de bean. Pueden devolver interfaces locales y remotas, valores dependientes, otros tipos de campo CMP y tipos de colecciones.
    • (Sólo beans de entidad CMP para EJB 1.1: una extensión IBM®) Cree una interfaz de ayuda de búsqueda para cada entidad CMP que contenga los métodos finder especializados (que no sea el método findByPrimaryKey).
      La lógica de que no sea el método findByPrimaryKey es necesaria para cada método buscador que se encuentra en la interfaz inicial de un bean de entidad con CMP:
      • La lógica se debe definir en una interfaz pública denominada NombreBeanFinderHelper, donde Nombre es el nombre del enterprise bean, por ejemplo, AccountBeanFinderHelper.
      • La lógica debe estar incluida en una constante de Serie denominada findMethodName WhereClause, donde findMethodName es el nombre del método de búsqueda. La constante de Serie puede contener cero o más interrogantes (?) que se sustituyen de izquierda a derecha con el valor de los argumentos del método de búsqueda cuando se llama al método.

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 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.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_dvdp
File name: tejb_dvdp.html