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

Beans Enterprise JavaBeans (EJB) 2.x uniquement : concevez une application J2EE et les beans enterprise nécessaires à celle-ci.
  • Avant de développer des beans d'entité à persistance gérée par conteneur (CMP), consultez la rubrique Contrôle des accès concurrents.
Beans EJB 3.x uniquement : concevez une application Java™ EE et les beans enterprise nécessaires à celle-ci.
  • 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

Les informations suivantes concernent les deux approches de base permettant de sélectionner les outils pour le développement des beans enterprise :
  • 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

  1. Si nécessaire, faites migrer le code préexistant vers la version requise de la spécification EJB.

    Les applications créées à l'aide de la spécification EJB versions 1.1, 2.0 et 2.1 peuvent s'exécuter telles quelles dans le conteneur EJB 3.x. Voir Migration du code de bean enterprise vers la spécification prise en charge.

  2. Développez et compilez les composants du bean enterprise.
    • Au minimum, un bean de session développé selon la spécification EJB 3.x requiert une classe de bean.
    • Au minimum, un bean de session EJB 1.1 doit avoir une classe de bean, une interface home et une interface distante. Un bean d'entité EJB 1.1 nécessite une classe de bean, une classe de clé primaire, une interface home et une interface distante.
    • Au minimum, un bean de session EJB 2.x nécessite une classe de bean, une interface home ou home locale et une interface distante ou locale. Un bean d'entité EJB 2.x nécessite une classe de bean, une classe de clé primaire, une interface home distante ou locale et une interface distante ou locale. Les types d'interface vont de paire : si vous implémentez une interface locale, vous devez également définir une interface home locale.
      Avertissement : La classe de clé primaire peut être inconnue. Pour plus d'informations, reportez-vous à la rubrique Classe de clé primaire inconnue.
    • Les beans de message ne nécessitent qu'une classe de bean.
  3. Pour chaque bean d'entité, effectuez les tâches nécessaires à la gestion des opérations de persistance.

    Pour les modules EJB 3.x, envisagez d'utiliser l'API Java Persistence API (JPA) pour développer des entités persistantes sous forme d'objets Java simples (POJO). Consultez la rubrique Java Persistence API pour plus d'informations. Si vous décidez de développer les beans d'entité en utilisant des spécifications d'EJB plus anciennes, suivez les instructions ci-après :

    • Créez un schéma de base de données pour les données persistantes du bean entity.
      • Pour les beans d'entité CMP, vous devez stocker les données persistantes du bean dans une base de données prise en charges. L'outil d'assemblage génère automatiquement le code SQL permettant de créer des tables de base de données pour les beans d'entité CMP. Si les beans d'entité CMP nécessitent des mappages de base de données complexes, nous vous recommandons d'utiliser Rational Application Developer pour générer le code des tables de base de données. Pour plus d'informations sur les outils d'assemblage using, voir les informations relatives aux outils d'assemblage.
      • Pour les beans d'entité BMP (à persistance gérée par bean), vous pouvez créer la base de données et la table de base de données à l'aide de vos outils de gestion de base de données, ou utiliser une base et une table existantes.

      Pour plus d'informations sur la création de bases de données et les tables de base de données, voir la documentation correspondante.

    • (Beans d'entité CMP pour EJB 2.x uniquement)

      Définissez les requêtes finder avec le langage EJB QL (EJB Query Language).

      Avec ce langage, définissez des méthodes finder en termes de zones CMP et de relations gérées par conteneur, comme suit :
      • Les dossiers publics sont visibles dans l'interface home bean. Elles sont implémentées dans la classe du bean et renvoient uniquement les interfaces distantes et les types de collection.
      • Les méthodes finder privées, exprimées sous forme d'instructions SELECT, ne sont utilisées que dans la classe du bean. Elles peuvent renvoyer des interfaces locales et distantes, des valeurs dépendantes, d'autres types de zones CMP et des types de collection.
    • (Beans d'entité CMP pour EJB 1.1 uniquement : une extension IBM® extension) Créez une interface auxiliaire finder pour chaque bean d'entité CMP qui contient des méthodes finder spécialisées (autres que la méthode findByPrimaryKey).
      Une logique autre que la méthode findByPrimaryKey est requise pour chaque méthode contenue dans l'interface home d'un bean d'entité CMP :
      • La logique doit être définie dans une interface publique appelée NomBeanFinderHelper, où Nom correspond au nom du bean enterprise, par exemple, AccountBeanFinderHelper.
      • La logique doit être contenue dans une constante de type chaîne appelée findMethodName WhereClause, où findMethodName est le nom de la méthode finder. La constante de type chaîne peut contenir un nombre supérieur ou égal à zéro de points d'interrogation (?), qui sont remplacés de gauche à droite par la valeur des arguments de la méthode de localisation lorsque celle-ci est appelée.

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


Icône indiquant le type de rubrique Rubrique de tâche



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=tejb_dvdp
Nom du fichier : tejb_dvdp.html