reseau social

Avantages des EJBs

Un article de ToutProgrammer.com.

Cet article présente les objectifs des EJBs, les avantages qu'ils apportent et le cadre où ils sont le plus efficacement mis en oeuvre.

Les EJBs ont quatre objectifs:

  • proposer des objets métiers,
  • gérer la concurrence,
  • gérer la persistance des données,
  • gérer les transactions.

Par "objets métiers" on entend des composants transversaux à toutes les applications. La mise en place de ces composants permet de mutualiser les développements. L'utilisation des objets métiers assurent également à l'application des règles de traitement communes.

L'utilisation des EJBs permet de déplacer des traitements habituellement effectués par le container web dans le container d'EJBs. Websphere offre une structure robuste pour gérer les requêtes concurrentes.

La persistance des données est un sujet qui est loin d'être abouti. Il n'y a pas une semaine au cours de laquelle on n'entend pas parler de la gestion de la persistance. Les EJBs sont de différents types:

  • EJBs session sans état: Ils correspondent typiquement à ce qu'on appelle un objet métier. Ils sont instanciés lors du traitement d'une requête web. Leur persistance ne dure que le temps de ce traitement.
  • EJBs session avec état: Ces objets métiers durent le temps de la session de l'utilisateur. Ceci permet d'instancier un EJB sur une page web puis de le rappeler et de le modifier sur d'autres pages. La fonction de ces objets ressemble de très près aux objets sessions proposés par les conteneurs web. Il est difficile de trancher entre l'utilisation simple d'objets sessions web et la mise en place des EJBs sessions avec état. Les objets sessions web sont plus faciles à mettre en œuvre et leur utilisation sera plus portable. Les EJBs session avec état sont fort utiles dans la cas d'une transaction complexe effectuée sur plusieurs pages web. L'utilisation d'EJB avec état permettra de valider facilement la transaction ou d'effectuer un "rollback" sur toutes les requêtes à annuler.
  • EJBs entity: Ces EJBs permettent de mapper une table de base de données. La mise en œuvre de ces EJBs est déconseillée. D'une part les EJBs entity ne répondent pas entièrement à la problématique du mapping, d'autre part leur utilisation en production ne garantie pas un site stable et robuste. L'EJBs entity ne sont pas encore assez mûrs pour être utilisés sur des applications en production.

Les EJBs permettent de gérer des transactions. En théorie les EJBs peuvent s'imbriquer (un EJB peut appeler un autre EJB). Chaque EJB crée une transaction ou s'exécute sur la même transaction. Ceci offre pas mal de possibilités. Il faut savoir qu'actuellement Websphere ne sait pas gérer deux EJBs reliées à des instances de bases de données différentes sauf si on utilise une certaine version d'Oracle avec un driver particulier et payant (Websphere 4.0 et WSAD 4.0.3 supportent les transactions globales sur Oracle uniquement avec le driver compatible XA de chez MERANT DataDirect Sequelink 5.1 lorsque l'on est sur les versions 8.1.7 et 9.0.1 d'Oracle).

La notion de transaction est donc délicate à mettre en œuvre. Elle dépend pour beaucoup de l'architecture des applications.

En conclusion la mise en œuvre des EJBs permet essentiellement de mettre en place des objets métiers transversaux à toutes les applications. Cette première brique ouvre la porte aux autres avantages des EJBs (transactions, persistance).

[modifier] Historique de l'article

Cet article, réalisé par Olivier MALE, a été publié pour la première fois le 21 juin 2003 sur le site ToutProgrammer.com (1ème version).