Pour les projets convertis de EJB 1.1 vers EJB 2.x, une procédure par étape doit être appliquée pour migrer le code EJB 1.1 existant vers EJB 2.x.
Pourquoi et quand exécuter cette tâche
Remarque : Les beans EJB 2.x sont pris en charge seulement dans un projet EJB 2.x (même si un projet 2.x prend également en charge les beans 1.1).
- Pour chaque bean CMP 1.1, remplacez chaque zone CMP par les méthodes getXXX et setXXX abstraites.
(La classe de bean doit donc être abstraite.)
- Pour chaque CMP, créez une méthode getXXX et setXXX abstraite pour la clé primaire.
- Pour chaque méthode de localisation CMP 1.1, créez une méthode EJBQL (langage de requête EJB) pour chaque méthode de localisation.
Remarque : Le langage de requête EJB a les limitations suivantes dans
version 8.5.x V6.0 :
- Les requêtes en langage de requête EJB impliquant des EJB avec des clés constituées de relations vers d'autres EJB apparaîtront non valides et provoqueront des erreurs au moment du déploiement.
- La prise en charge du langage de requête EJB IBM® étend la spécification EJB 2.x de plusieurs façons, y compris la suppression de certaines limitations, l'ajout de la prise en charge de davantage de fonctions DB2, etc. Si la portabilité entre les bases de données de différents fournisseurs ou l'outil de déploiement EJB est un impératif, il est nécessaire d'écrire toutes les requêtes en langage de requête EJB en se conformant strictement aux instructions décrites dans le chapitre 11 de la spécification EJB 2.x.
- Pour tous les outils de recherche CMP 1.1, renvoyez java.util.Collection au lieu de java.util.Enumeration.
- Pour tous les beans CMP 1.1, changez toutes les occurrences de this.field = value en setField(value) dans ejbCreate() et partout ailleurs dans le code.
- Mettez à jour votre traitement des exceptions (comportement d'annulation) pour les exceptions autres que celles de l'application :
- Emettez des exceptions javax.ejb.EJBException au lieu de java.rmi.RemoteException pour signaler des exceptions autres que celles de l'application.
- Dans EJB 2.x et 1.1, toutes les exceptions autres que celles de l'application émises par l'instance aboutissent à l'annulation de la transaction dans laquelle l'instance s'exécutait, et à l'abandon de l'instance.
- Mettez à jour votre traitement des exceptions (comportement d'annulation) pour les exceptions de l'application :
- Dans EJB 2.x et 1.1, une exception d'application ne provoque pas l'annulation automatique d'une transaction par le conteneur.
- Dans EJB 1.1, le conteneur effectue l'annulation seulement si l'instance a été appelée à l'aide de la méthode setRollbackOnly() sur son objet EJBContext.
- Mettez à jour toutes les définitions CMP de valeurs par défaut spécifiques à l'application, de façon à ce qu'elles se trouvent dans ejbCreate (sans utiliser de variables globales, car les conteneurs EJB 1.1 définissent toutes les zones avec des valeurs par défaut avant d'appeler ejbCreate, qui remplaceront toutes les valeurs par défaut précédentes spécifiques à l'application).