Blue Flower

Chercher

La visibilité d'un EJB session par le client

La visibilité des  EJBs session par rapport aux applications clientes dépendent du faite qu'ils implémentent  un  "business interface" (interface metier) ou qu'ils soient  "no-interface-view" (sans interface metier) . Tous les autres aspects des EJBs (méthodes autres que les business méthodes et les paramètres de configuration) sont cachés aux applications clientes.

Le client d'un EJB session obtient une référence de celui-ci soit par injection de dépendances (en utilisant des annotations) soit par  une recherche JNDI (Java Naming and Directory Interface).

L'injection de dépendances est le moyen le plus simple pour obtenir une référence d'EJB session. Les applications clientes qui s'exécutent dans un environnement géré par un serveur d'application Java EE, les applications Web JavaServer Faces et les services Web JAX-RS  prennent en charge l'injection de dépendances à l'aide de l'annotation javax.ejb.EJB.

Syntaxe des espaces de nommages JNDI

Trois types d'espaces de nommages JNDI portables sont utilisés pour les recherches JNDI; 
 -"java: global",
- "java: module" et
- "java: app".
L'espace de nommage JNDI  " java:global"  est le moyen portable permettant de trouver des EJB session distants en utilisant les recherches JNDI. Une  adresse JNDI est donc de l'un des types ci-dessus:

  • java: global [/ nom de l'application] / nom du module / nom du bean entreprise [/ nom de l'interface]
    ici on a "nom de l'application" et "nom du module"  qui sont respectivement par  défaut égales au nom de l'application, au nom du module ; "le nom du bean entreprise" est le nom de l'EJB  moins l'extension. Le  "nom de l'application" est requis uniquement si l'application est empaquetée dans un fichier EAR. Le "nom de l'interface" est requis uniquement si le bean enterprise implémente plusieurs interfaces métier. L'espace de noms "java: module" est utilisé pour rechercher les beans d'entreprise locaux dans le même module. Les adresses JNDI utilisant l'espace de noms java: module ont la forme suivante:
  •  java: nom du module / enterprise bean / [nom de l'interface]
    Le nom de l'interface est requis uniquement si l'EJB implémente plusieurs interfaces métier.
  • L'espace de noms "java: app" est utilisé pour rechercher les beans session locaux empaquetés dans la même application c'est-à-dire que l'EJB est empaqueté dans un fichier EAR contenant plusieurs modules Java EE. Les adresses JNDI utilisant l'espace de noms "java:app" sont de la forme suivante:
    java: app [/ nom du module] / nom du bean enterprise [/ nom de l'interface]
    Le nom du module est facultatif. Le nom de l'interface est requis uniquement si l'EJB implémente plusieurs interfaces métier.
Si  un bean session appelé MyBean est empaqueté dans l'archive d'application Web myApp.war, le nom du module est myApp. Le nom JNDI portable est "java: module / MyBean". Un nom JNDI équivalent utilisant l'espace de noms java: global est "java: global / myApp / MyBean".

Choisir l'accès à distance ou local pour  les EJB

Définir le type d'accès d'un EJB session (accès distant ou local) dépend de plusieurs facteurs:

  • Le niveau de couplage entre l'application client et l'EJB
  • la fréquence de sollicitation de l'EJB par l'application cliente
  • La nature distribuée ou pas de l'application

précédent