Ejemplo: utilización de un bean de entidad de sólo lectura

Caso de uso y ejemplo para escribir una aplicación EJB (Enterprise JavaBeans) 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 de IBM, incluidas la extensión del archivo WAR (WEB-INF/ibm-web-ext.xmi) y la extensión de la aplicación (META-INF/ibm-application-ext.xmi) están 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 da las 22:00 entre la llamada a getItemPrice() y getShippingCost(), el método getShippingCost() aún devuelve el valor que tenía antes de que se produjera ningún cambio en la base de datos que pudiera haber ocurrido a las 22:00 h, dado que la primera invocación a método de esta transacción sucedió antes de las 22:00 h. De este modo, el precio del artículo y el coste de envío utilizado permanecen sincronizados entre sí.


Icon that indicates the type of topic Reference topic



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