Remarques à propos des modules EJB 3.x
Lorsque vous utilisez les modules Enterprise JavaBeans (EJB) 3.x, gardez à l'esprit les remarques suivantes.
La version 8.0 ne prend pas en charge les beans entity 1.x et 2.x dans les modules EJB de niveau 3.x
IBM®WebSphere Application Server version 8.0 ne prend pas en charge les beans d'entité BMP et CMP 1.x et 2.x dans les modules EJB de niveau 3.x. Les beans entity EJB peuvent être utilisés sur la version 8.0, mais ils doivent être empaquetés dans un module EJB 2.1 ou de niveau antérieur.
Les applications Java EE (Java™ Platform, Enterprise Edition) contenant des beans entity EJB dans des modules EJB de niveau 3.x ne peuvent pas être installées dans la version 8.0.
- Le fichier JAR d'EJB contient des données de configuration dans un fichier ejb-jar.xml avec une spécification
d'en-tête EJB 3.0 ou EJB 3.1. Par
exemple :
<ejb-jar id="ejb-jar_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
- Le fichier JAR d'EJB contient des beans avec des annotations de code source du style EJB 3.x fournissant les données de configuration. Ce fichier ne contient pas de fichier descripteur de déploiement ejb-jar.xml.
Vous devez rempaqueter vos modules EJB 3.x en utilisant des modules EJB 2.x ou version antérieure. Sinon, l'installation d'applications contenant des beans entity échoue.
Annotations
Vous devez décider si vous allez utiliser des annotations, des descripteurs de déploiement ou les deux. Pour plus d'informations sur les annotations, voir Annotations des métadonnées EJB 3.x.
Module EJB
WebSphere Application Server Version 8.0 prend en charge les fichiers d'archive Java (JAR) d'EJB avec un descripteur de déploiement ejb-jar.xml déclaré au niveau 1.1, 2.0, 2.1, 3.0 ou 3.1, ou sans descripteur de déploiement ejb-jar.xml. En l'absence de descripteur de déploiement, le module EJB est supposé être de niveau 3.0 ou supérieur.
Les modules EJB contenant des beans EJB 3.x doivent être déclarés de niveau EJB 3.0 ou EJB 3.1. Pour ce faire, vous devez attribuer la valeur 3.0 ou 3.1 au niveau de descripteur de déploiement ejb-jar.xml ou vous assurer que le module ne contient aucun descripteur de déploiement ejb-jar.xml. Si le niveau du module est 2.1 ou inférieur, aucune fonction spécifique à EJB 3.x, telle que l'analyse des annotations ou l'injection de ressources, n'est effectuée.
Les beans entity ne sont pas pris en charge dans les modules EJB de niveau 3.x. Vous devez placer les beans entity dans des modules EJB 2.1 ou de niveau antérieur.
Si vous désirez intégrer un descripteur de déploiement dans un module EJB 3.x, plusieurs possibilités s'offrent à vous. Empaquetez, dans un module EJB 3.x, des beans de session et/ou de message de niveau EJB 3.x exclusif, de niveau 2.1 exclusif, ou encore une combinaison des deux. Le descripteur de déploiement XML doit être de la version 3.0 ou 3.1. Les beans d'entité 2.1 doivent obligatoirement être intégrés dans des modules avec descripteurs de déploiement 2.1. Les modules EJB contenant des beans EJB 3.x doivent être au niveau de spécification EJB 3.0 ou EJB 3.1 lorsqu'ils s'exécutent sur le produit. Pour préparer le module EJB à la prise en charge de beans EJB 3.x, définissez le descripteur de déploiement ejb-jar.xml au niveau 3.0 ou 3.1 ou assurez-vous que le module ne contient pas de descripteur de déploiement ejb-jar.xml. Si le module est du niveau EJB 2.1 ou antérieur, aucune fonction EJB 3.x, y compris l'examen d'annotations ou l'injection de ressources, n'est effectuée à l'exécution.
Module client d'application Java EE
Le produit prend en charge les modules de client d'application pour Java EE. Il prend de plus en charge l'injection de références EJB dans les composants client si l'injection est définie via l'annotation @EJB.
Définition d'une référence ejb-ref dans une interface métier EJB 3.x à partir d'un descripteur de composant client Java EE
Il est possible de définir une référence ejb-ref à partir d'un descripteur application-client.xml qui désigne une interface métier EJB 3.x. L'accès aux interfaces métier EJB 3.x s'effectue directement sans interface home, mais l'élément ejb-ref dans Java EE requiert la spécification d'un type d'interface home. Vous devez donc inclure la strophe <home></home> dans la définition ejb-ref, mais avec une valeur null comme dans l'exemple ci-après. Pour la valeur de la strophe <remote>, indiquez le nom de classe de l'interface métier EJB 3.x. Enfin, lorsque vous définissez la valeur de la liaison, que ce soit lors de l'installation de l'application ou via les outils de développement, précisez l'emplacement dans lequel l'interface métier EJB 3.x a été liée.
<ejb-ref id="EJBRef_1">
<ejb-ref-name>java_comp-env_name_of_ref</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home></home>
<remote>com.ejbs.business.interface.class.name</remote>
</ejb-ref>
La section correspondante du fichier
ibm-application-client-bnd.xmi est similaire à l'exemple de code ci-après. Un
schéma de liaison EJB par défaut est employé dans cet exemple ; les
conventions de liaison EJB par défaut sont décrites dans la rubrique
relative à la prise en charge des liaisons d'applications EJB 3.x. <ejbRefBindings xmi:id="EjbRefBinding_1"
jndiName=EJB3App/EJB3Mod.jar/MyBean##com.ejbs.business.interface.class.name">
<bindingEjbRef href="application-client.xml#EjbRef_1"/>
</ejbRefBindings>