Développement de beans enterprise
Un des deux scénarios de développement des beans enterprise est typiquement utilisé avec le produit. Le premier est une ligne de commande utilisant Ant, Make, Maven ou des outils similaires. Le second est un développement et un environnement de génération basés sur IDE. Les étapes de cet article détaillent le développement sans IDE.
Avant de commencer
- Avant de développer des beans d'entité à persistance gérée par conteneur (CMP), consultez la rubrique Contrôle des accès concurrents.
- Avant de développer des beans d'entité CMP, consultez la rubrique "Contrôle des accès concurrents". Rappelez-vous que les modules EJB 3.x ne prennent pas en charge les beans d'entité. Vous devez continuer à placer des beans d'entité dans vos modules de niveau EJB 2.x.
Pourquoi et quand exécuter cette tâche
- Vous pouvez utiliser un des outils IDE qui génèrent automatiquement des composants importants du code des beans entreprise et contiennent des outils intégrés permettant d'assembler et de tester ces beans. Le produit Rational Application
Developer est l'environnement IDE recommandé.
Ajoutez install_root/dev/JavaEE/j2ee.jar au chemin de génération du projet IDE pour résoudre les dépendances sur les nouvelles classes API EJB 3.x. L'assistant de code fonctionne lorsque ce fichier JAR est ajouté au chemin de génération de projet. Si vous définissez un serveur (voir perspective J2EE), pointez le serveur vers le répertoire d'installation du produit. Lorsque vous créez un projet lié à Java EE dans Rational Application Developer, le projet ajoute automatiquement install_root/dev/JavaEE/j2ee.jar. au chemin de génération de projet.
- Si vous avez décidé de développer des beans enterprise sans environnement IDE, vous devez au moins disposer d'un éditeur de texte ASCII. Vous pouvez également utiliser un outil de développement Java qui ne prend pas en charge le développement de beans enterprise. Vous pouvez alors utiliser les outils disponibles dans le kit Java Software Development
Kit (SDK) et dans ce produit pour assembler, tester et déployer les beans.
Comme l'outil d'assemblage, un environnement de génération de ligne de commande standard Java EE requiert des modifications pour l'utilisation des modules EJB 3.x. Comme les éléments de développement d'application Java EE précédents, vous devez inclure le fichier j2ee.jar situé dans le répertoire install_root/dev/JavaEE sur le chemin de classes du compilateur. Un exemple d'environnement de génération d'une ligne de commande se trouve dans le répertoire install_root/samples/src/TechSamp.
Les étapes ci-dessous concernent principalement la deuxième approche, c'est-à-dire le développement sans environnement IDE.
Procédure
Exemple : Utilisation d'un bean d'entité en lecture seule
Ce scénario et exemple d'utilisation illustre l'écriture d'une application d'EJB (Enterprise JavaBeans) 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 d'entité 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: 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.
Que faire ensuite
Assemblez les beans dans un ou plusieurs modules EJB. Voir la rubrique Assemblage des modules EJB ou Assemblage des modules EJB 3.x si vous utilisez des beans EJB 3.x.