Exemple : Utilisation d'un bean d'entité en lecture seule

Scénario d'utilisation et exemple d'écriture d'une application d'EJB qui met en oeuvre un bean entity en lecture seule.

Scénario d'utilisation

Un client dispose d'une base de données de prix et de coûts unitaires d'expédition quotidiennement mis à jour avant 22:00 (heure locale). Il veut écrire une application d'EJB qui accède à ces données en lecture seule. C'est-à-dire une application qui ne met jamais à jour la base de données de prix. La mise à jour s'effectue par le biais d'une autre application.

Exemple

L'interface locale des beans entity du client peut être la suivante :

	public interface ItemCatalogData extends EJBLocalObject {
	 
	  public int getItemPrice();
	 
	  public int getShippingCost(int destinationCode);
	 
	}

Le code de la méthode SessionBean sans état (partant du principe que c'est une TxRequired) qui appelle ce bean d'entité pour déterminer le coût total, frais d'expédition compris, se présente ainsi :

	.....
	// Certaines étapes transactionnelles s'exécutent avant ce stade, tel le retrait de
l'article 
  // du stock, etc.
  // Extrayez le prix de cet article et calculez le coût total pour l'acheteur
 
  ItemCatalogData theItemData = 
	    (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber);
 
	int totalcost = theItemData.getItemPrice();
	 
	// ...     autres traitements, etc. qui se produisent entre temps
	// ...
	// ...
	 
	// Ajoutez les coûts d'expédition
	totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
Au moment de l'assemblage de l'application, le client définit les paramètres de mise en cache EJB pour ce bean comme suit :
  • ActivateAt = ONCE
  • LoadAt = DAILY
  • ReloadInterval = 2200
    Fonction obsolète Fonction obsolète: Les attributs reloadInterval et reloadingEnabled des extensions de descripteurs de déploiement IBM, y compris l'extension de fichier WAR (WEB-INF/ibm-web-ext.xmi) et l'extension d'application (META-INF/ibm-application-ext.xmi), ne sont plus utilisés.depfeat

Au premier appel de la méthode getItemPrice() après 22:00 chaque soir, le conteneur EJB recharge les informations relatives aux prix à partir de la base de données. Si l'horloge atteint 22:00 entre l'appel de getItemPrice() et getShippingCost(), la méthode getShippingCost() renvoie encore la valeur qu'elle avait avant les modifications apportées à la base de données à 22:00, puisque le premier appel de méthode de cette transaction a eu lieu avant 22:00. En conséquence, le prix et le coût d'expédition de l'article utilisés restent synchrones l'un par rapport à l'autre.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_readonly
Nom du fichier : rejb_readonly.html