Outils EJB - Notes sur l'édition

1.0 Introduction
2.0 Spécifications et logiciels pris en charge
3.0 Problèmes connus
   3.1 Erreurs de régénération
   3.2 Mappage intermédiaire - Restrictions et conseils
   3.3 Prise en charge du déplacement par glissement dans l'éditeur de mappage
   3.4 Suppression de tables et de schémas dans la vue Navigateur de la perspective J2EE
   3.5 Prédicats optimistes pour les beans entity CMP
   3.6 Héritage - Restrictions et conseils
   3.7 Echec de génération du code de déploiement lorsque le chemin d'installation comporte plusieurs espaces consécutifs
   3.8 Référencement des fichiers JAR de l'environnement d'exécution lors du développement
   3.9 Ne pas mapper des types composés sur plusieurs tables
   3.10 La suppression d'une entité CMP ne supprime pas l'entrée de mappage
   3.11 Restrictions de QL EJB
   3.12 La validation des références d'EJB n'est pas automatique
   3.13 Attributs hérités des beans CMP
   3.14 Noms en arabe non pris en charge pour les fichiers et les beans Java
   3.15 Restrictions liées à la génération de requêtes
   3.16 Validation QL d'EJB pour les fichiers JAR d'EJB 2.0
   3.17 Restrictions liées à ClearCase lors de l'exécution d'actions d'EJB dans la hiérarchie J2EE
   3.18 Erreur lors de l'édition du lien local-ejb-ref
   3.19 Erreurs dans la liste des tâches après le déploiement des relations EJB 2.0
   3.20 Ajout d'un répertoire au fichier MANIFEST.MF
   3.21 ejbCreate spécialisé manquant pour les colonnes de clés externes non nulles
   3.22 Restriction des modifications apportées aux zones cmp-field de la page Source par héritage
   3.23 Code de déploiement d'EJB non supprimé lors de la modification des classes d'un bean
   3.24 Clé principale inconnue non prise en charge
   3.25 La modification d'une classe de clé principale pour les relations 1.1 CMP génère des erreurs de compilation
   3.26 Erreurs de réflexion lors de la mise à jour à partir d'un référentiel CVS
   3.27 Suppression d'une requête FIND de la vue Structure
   3.28 Page Source et héritage des EJB
   3.29 Les requêtes EJB QL ne sont pas générées correctement pour les relations à origines et destinations multiples dans une structure d'héritage
   3.30 Problème de mappage de serveur SQL avec le type de données FLOAT
   3.31 Il peut être nécessaire de générer le code déployé lorsque des beans enterprise provenant d'un autre projet sont utilisés
   3.32 Prise en charge du mappage des beans enterprise vers les clés externes et les clés primaires
   3.33 Restriction liée à l'héritage et au mappage de tables secondaires
   3.34 Suppression des beans d'accès lors de la migration des beans EJB 1.1 vers EJB 2.0
   3.35 Déploiement d'applications EJB avec des convertisseurs et des composeurs sur WebSphere Application Server v4.0.6
   3.36 Migration de projets EJB contenant des classes binaires
   3.37 Implémentation du mappage ascendant pour les vues

1.0 Introduction

Les outils d'EJB offrent un environnement spécialisé permettant de développer des beans enterprise. Les outils EJB comprennent les éléments suivants :

Le présent fichier Readme décrit les problèmes et restrictions connus, ainsi que les solutions associées aux outils d'EJB.

2.0 Spécifications et logiciels pris en charge

L'option -dbvendor de la commande ejbdeploy (outil de déploiement d'EJB) accepte désormais les valeurs suivantes (correspondant aux bases de données prises en charge) :

Les valeurs suivantes ne sont plus acceptées :

3.0 Problèmes connus

3.1 Erreurs de régénération

Si des fichiers ou des ressources du plan de travail semblent ne pas être synchronisés ou qu'une erreur inattendue survient (par exemple, des éditeurs et des vues ne reflètent pas les paramètres du descripteur de déploiement en cours), il est possible d'y remédier en fermant, puis en rouvrant le projet à partir du menu Projet.

3.2 Mappage intermédiaire - Restrictions et conseils

  1. L'option Concordance par nom ne traite que les concordances exactes. Si vous avez généré votre schéma à l'aide d'un commutateur compatible WebSphere Application Server Version 3.5 ou importé un fichier JAR de WebSphere Application Server Version 3.5, les noms de vos tables portent l'extension "tbl" et ne sont pas reconnus.
  2. Héritage : les beans enfant ne sont pas mappés s'ils ne disposent pas de leurs propres zones. Vous devez les mapper manuellement vers la table parent.
  3. java.util.Date n'est pas pris en charge dans le mappage des zones CMP 1.1.
  4. Si un composeur est utilisé dans un mappage, générez la mappe, sauvegardez-la, fermez, puis rouvrez le projet et déployez-le.

3.3 Prise en charge du déplacement par glissement dans l'éditeur de mappage

Le déplacement par glissement n'est pris en charge que dans le "sens" de la mappe. Par exemple, si la mappe a été créée à partir d'une opération "Descendante", vous pouvez déplacer un bean enterprise par glissement dans une base de données. Les opérations de déplacement par glissement suivantes sont permises :

  1. Le déplacement par glissement d'un bean enterprise dans une table crée une mappe entre ces deux éléments.
  2. Le déplacement par glissement d'un bean dans une base de données entraîne la création d'une table correspondante et de ses colonnes et la mappe sur le bean et les attributs.

3.4 Suppression de tables et de schémas dans la vue Navigateur de la perspective J2EE

Si une table doit être supprimée, utilisez la perspective Données ou la vue Hiérarchie J2EE de la perspective J2EE ; tous les liens dépendants seront également supprimés. Normalement, vous ne devez pas utiliser le navigateur ou le navigateur J2EE pour supprimer des ressources J2EE car les dépendances ne sont alors pas mises à jour.

3.5 3.5 Prédicats optimistes pour les beans entity CMP

Dans WSAD 5.0, le développeur de beans a la possibilité d'identifier les attributs à utiliser pour la mise à jour. Les fichiers JAR EJB créés à l'aide de versions antérieures de WSAD ne contiennent pas cette spécification pour les beans entity CMP 1.1. Toutefois, lors du déploiement à l'aide de WSAD 5.1, la sémantique précédente est prise en charge. En l'absence de liste d'attributs, tous les prédicats sont utilisés. Les beans entity CMP 2.0 sont traités différemment. Si vous ne sélectionnez pas d'attribut comme prédicat, aucun attribut n'est ajouté à la mise à jour.

3.6 Héritage - Restrictions et conseils

  1. N'utilisez pas de type BLOB dans une structure d'héritage feuille/racine si vous utilisez une base de données Oracle.
  2. Le mappage d'un héritage feuille/racine n'est pas pris en charge pour les bases de données MySQL, InstantDB, SQL92 et SQL99. Elles ne supportent pas les opérateurs set SQL pour les requêtes complexes utilisées pour un mappage feuille/racine. Pour effectuer un test avec ces bases de données, vous devez utiliser un mappage sur une seule table.
  3. Le mappage de zones CMP vers des colonnes non vides n'est pas pris en charge dans les beans hérités. Les prédicats optimistes ne peuvent être définis sur les zones CMP qu'à partir du bean racine.

3.7 Echec de génération du code de déploiement lorsque le chemin d'installation comporte plusieurs espaces consécutifs

Si l'un des répertoires du chemin sur lequel le produit est installé contient plusieurs espaces consécutifs, la génération du code de déploiement échoue.

3.8 Référencement des fichiers JAR de l'environnement d'exécution lors du développement

Si vous devez compiler des fichiers JAR visibles par l'environnement d'exécution de Websphere Application Server (par exemple, rt.jar, xerces.jar, etc.), vous devez en règle générale ajouter ces fichiers JAR à l'installation de l'environnement d'exécution correspondant à l'aide des variables prédéfinies pour le chemin d'accès aux classes. Par exemple, vous devez utiliser la variable de chemin d'accès aux classes WAS_PLUGINDIR pour les fichiers JAR du serveur WebSphere Application Server v4.0 et la variable WAS_50_PLUGINDIR pour les fichiers JAR du serveur WebSphere Application Server v5.0.

3.9 Ne pas mapper des types composés sur plusieurs tables

L'éditeur de mappage permet de mapper un type composé vers plusieurs colonnes dans des tables différentes. Cela génère des erreurs dans la génération du code de déploiement. Vérifiez que toutes les colonnes du mappage du type composé appartiennent à la même table.

3.10 La suppression d'une entité CMP ne supprime pas l'entrée de mappage

Lorsqu'une entité CMP est supprimée, les mappes correspondantes dans lesquelles ce bean est référencé ne voient pas leur mappage supprimé. Lorsque l'éditeur de mappage est ouvert sur ces fichiers après la suppression d'une entité, les mappages sont supprimés. Ce comportement est normal. Vous devez ouvrir l'éditeur de mappage avant de générer le code de déploiement.

3.11 Restrictions liées à EJB QL

  1. Les requêtes EJB QL utilisant des beans enterprise dont les clés sont constituées de relations à d'autres EJB apparaissent comme non valides et génèrent des erreurs lors du déploiement. Cet incident est connu.
  2. Le support IBM EJB QL étend la spécification EJB 2.0 de différentes manières, notamment en supprimant certaines restrictions et en prenant en charge d'autres fonctions DB2. Si la portabilité entre les bases de données ou les outils de déploiement d'EJB des divers fournisseurs pose des difficultés, écrivez bien toutes les requêtes EJB QL conformément au chapitre 11 de la spécification EJB 2.0.

3.12 Validation des références EJB n'est pas automatique

La validation des références d'EJB locales, de la référence EJB et des références de ressources n'est pas automatique lorsque ces références sont modifiées. Le valideur EAR doit être déclenché de manière explicite pour que ces références soient validées.

3.13 Attributs hérités de beans CMP

Lors de la configuration des CMP hérités, les nom des attributs CMP des enfants ne peuvent pas être identiques à ceux définis dans leurs chaînes parent. Par exemple, Parent correspond à un bean CMP contenant un ID d'attribut de type int. Enfant, un bean CMP en cours de création à l'aide de l'assistant de création des beans CMP, a spécifié Parent comme son supertype et a tenté d'ajouter un ID attribut de type int, cet attribut n'est pas ajouté car il hériterait de l'ID attribut de Parent. Si Enfant2, un autre bean CMP sans lien avec le premier, contenait un ID attribut de type java.lang.String et que sa structure d'héritage ait été modifiée à l'aide de l'éditeur de descripteur de déploiement afin qu'il puisse hériter de Parent, l'ID attribut de type java.lang.String d'Enfant2 serait supprimé car il hériterait de l'ID attribut de Parent et qu'en raison de ce conflit de type, des erreurs de validation pourraient être générées.

3.14 Noms en arabe non pris en charge pour les fichiers et les beans Java

N'utilisez pas de noms arabes pour les fichiers Java, les beans Java ou les beans d'accès. N'utilisez pas non plus de noms en arabe lors de l'utilisation de l'exemple MiniBank.

3.15 Restrictions liées à la génération de requêtes

  1. Le préchargement entre les relations m:n entraîne la génération d'un SQL incorrect. Il s'agit d'une restriction connue qui sera corrigée ultérieurement.
  2. Le préchargement entre les relations auto-référencées entraîne la génération d'un SQL incorrect.
  3. Les relations entre les ejb parent et enfant d'une même hiérarchie d'héritage qui ne sont pas définies correctement doivent être évitées.

3.16 Validation du langage des requêtes d'EJB pour les fichiers JAR d'EJB 2.0

La validation du langage des requêtes d'EJB est actuellement effectuée dans le cadre de la validation du mappage EJB-RDB. S'il n'existe pas de document de mappage (fichier Map.mapxmi) dans le projet, les requêtes d'EJB ne sont pas validées. Cela doit changer dans la prochaine version ; les requêtes seront validées qu'il existe un document de mappage ou non.

3.17 Restrictions ClearCase lors de l'utilisation d'actions d'EJB dans la hiérarchie J2EE

Si vous utilisez les actions de la hiérarchie J2EE pour modifier des beans enterprise (par exemple, ajout d'une zone CMP à un bean), vous devez d'abord vérifier que les fichiers de projet qui se trouvent dans le référentiel sont réservés.

3.18 Erreur lors de l'édition du lien local-ejb-ref

Si vous tentez de modifier le lien local-ejb-ref dans la page "Références" de l'éditeur de descripteur de déploiement EJB à l'aide du bouton "Parcourir", la sélection d'un bean cible ne possédant pas d'interface éloignée est désactivée. Pour remédier à cela, supprimez la référence, puis créez-la à nouveau.

3.19 Erreurs dans la liste des tâches après le déploiement des relations EJB 2.0

Si vous supprimez une relation EJB 2.0 et que vous régénérez le code de déploiement, des erreurs non valides peuvent apparaître dans la liste des tâches. Pour éviter cela, supprimez le code de déploiement des beans avant de le regénérer.

Parfois, des erreurs non valides peuvent également apparaître dans la liste des tâches après l'ajout d'une relation EJB 2.0 et la régénération du code de déploiement. Dans ce cas, une nouvelle régénération devrait permettre de supprimer ces erreurs.

3.20 Ajout d'un répertoire au fichier MANIFEST.MF

Lorsque vous ajoutez un répertoire au fichier MANIFEST.MF, vous recevez un message d'erreur comparable à celui indiqué ci-après.

IWAE0024W Le chemin d'accès aux classes du fichier manifeste pour l'archive xyz.jar contient une entrée, propriétés, qui ne peut pas être résolue à un fichier ou un module dans le projet EAR : ...

La spécification EJB n'est pas explicite sur ce point. Cependant, elle suggère que les fichiers libres dans un module EAR ne sont pas valides. Actuellement, cette configuration fonctionne dans WebSphere Application Server mais il est possible qu'elle ne fonctionne plus ultérieurement.

Vous pouvez créer un projet Java et ajouter les fichiers de propriétés dans un dossier source (ou dans le projet si celui-ci est le dossier source). Vous pouvez ajouter ce projet Java en tant que fichier JAR d'utilitaire de projet dans l'onglet Modules de l'éditeur d'application, puis exécuter le fichier EAR dans l'environnement de test WebSphere. Lorsque vous exportez le fichier EAR, le projet Java est automatiquement ajouté à un fichier JAR et inclus dans le fichier EAR.

3.21 ejbCreate spécialisé manquant pour les colonnes de clés externes non nulles

Si vous effectuez un mappage ascendant sur un schéma avec une clé externe dont les colonnes ne sont pas vides, vous devez créer une méthode ejbCreate() spécialisée avec le type d'interface client d'un rôle ajouté à la signature. Cela n'est pas automatiquement effectué par le mappage ascendant.

3.22 Restriction des modifications apportées aux zones cmp-field de la page Source par héritage

Pour prendre en charge les spécifications EJB 1.1 et 2.0, nous devons créer une zone cmp-field correspondante pour chaque bean subtype d'un lien de parenté d'EJB. Si vous ouvrez l'éditeur de descripteur de déploiement d'EJB et que vous modifiez le nom de l'une de ces zones dans la page Source, la modification de nom correspondante n'est pas apportée aux zones cmp-fields créées sur les beans subtype pour satisfaire les spécifications des EJB. La solution consiste à utiliser l'action Editer de la page Beans pour modifier le nom.

3.23 Code de déploiement d'EJB non supprimé lors de la modification des classes d'un bean

Afin que plusieurs beans enterprise puissent utiliser les mêmes classes Java, le code de déploiement généré est requis pour utiliser une technique de nommage permettant d'identifier de manière make les noms de chaque classe de déploiement générée. Les noms sont dérivés de la classe du bean, des interfaces et des classes de clé.

Si vous avez déjà généré le code de déploiement d'un bean et que vous voulez modifier l'une de ces classes, vous devez d'abord supprimer le code de déploiement. Si vous ne le faites pas, les anciennes classes générées ne seront pas supprimées et pourront contenir des erreurs de compilation. Cela peut également être vrai si vous modifiez le type de votre zone primkey-field à l'aide de l'action Editer de la page Beans. Cela remplacera automatiquement la classe de clé par le type de classe spécifié ou une clé composée sera créée si une zone primkey-field n'est plus valide.

3.24 Clé principale inconnue non prise en charge

Les outils d'EJB ne prennent pas en charge la définition de clé principale inconnue décrite par la spécification EJB 2.0. La solution consiste à définir une classe de clé principale spécifique.

3.25 .25 La modification d'une classe de clé principale pour les relations 1.1 CMP génère des erreurs de compilation

Pour prendre en charge les relations 1.1 CMP, des classes de liens sont créées. Il est pour cela nécessaire de connaître les classes des clés principales des beans. Si vous modifiez la classe de clé principale d'un CMP version 1.1 impliqué dans les relations, les classes de liens générées contiendront toujours des références à l'ancienne classe de clé principale. La solution consiste à mettre à jour manuellement les classes de liens. Il ne doit rester que deux occurrences pour lesquelles la modification est nécessaire.

3.26 Erreurs de réflexion lors de la mise à jour à partir du référentiel CVS

Si vous modifiez un projet EJB à partir d'un référentiel CVS et que la vue Tâches affiche des erreurs indiquant que des classes ou des interfaces n'ont pas été reflétées, essayez de recompiler le projet EJB pour éliminer les erreurs.

Cette erreur peut apparaître sous la forme suivante : "CHKJ2802E : La classe ejb-class test.SessionBean, ou un de ses supertypes ne peut pas être reflétée. Vérifiez le chemin d'accès aux classes."

3.27 Suppression d'une requête FIND de la vue Structure

La suppression d'une requête FIND d'un bean CMP 2.0 contenant une interface locale de la vue Structure n'entraîne pas la suppression de la déclaration de méthode de l'interface home locale. La solution consiste à utiliser le bouton Supprimer de la section Demandes de l'éditeur de descripteur de déploiement d'EJB.

3.28 Page Source et héritage des EJB

Si vous modifiez la forme des beans CMP dans une hiérarchie d'héritage, vous devez utiliser les pages de conception de l'éditeur de descripteur de déploiement d'EJB et non la page Source. Par exemple, pour ajouter ou supprimer des zones CMP, ou modifier la zone prim-key d'un bean CMP, ces zones sont synchronisées par les outils de tous les beans hérités, pour que ces beans restent conformes à la spécification EJB. Cette synchronisation risque de ne pas s'effectuer si vous modifiez le code source dans la page Source.

3.29 Les requêtes EJB QL ne sont pas générées correctement pour les relations à origines et destinations multiples dans une structure d'héritage

Dans ce scénario, une structure d'héritage d'EJB est définie (soit un héritage racine/feuille, soit un héritage de table unique) et vous disposez d'une relation à origines et destinations multiples vers un bean EJB dans cette structure. Dans ce cas, toute requête EJB QL définie pour ces beans comporte des instructions JOIN incorrectes.

Voici un exemple de la structure :

Client <---- m:m ----> Compte
                            |
                            |
                    ------héritage------
nbsp;                    
                        |         |
                   
Vérification   Sauvegardes

3.30 Problème de mappage de serveur SQL avec le type de données FLOAT

Si votre bean CMP a été mappé vers une base de données SQL Server, un champ de type float doit être mappé vers une colonne de type FLOAT et non REAL.

3.31 Il peut être nécessaire de générer le code déployé lorsque des beans enterprise provenant d'un autre projet sont utilisés

Si un bean enterprise d'un projet EJB utilise l'interface locale (Home) ou éloignée (Remote) d'un second bean entreprise stocké dans un autre projet (par exemple, s'il dispose d'une méthode utilisant l'interface éloignée du second bean enterprise comme paramètre), vous devez générer le code déployé des deux projets lorsque vous modifiez l'interface locale ou éloignée du second bean enterprise.

Cette opération permet de s'assurer que les classes générées par RMIC pour le second bean enterprise sont à jour pour les deux projets.

3.32 Prise en charge du mappage des beans enterprise vers les clés externes et les clés primaires

Si vous mappez un bean enterprise à une table de base de données, vous devez prendre en considération plusieurs restrictions liées aux clés externes et aux clés principales.

3.33 Restriction liée à l'héritage et au mappage de tables secondaires

Si vous adoptez une procédure feuille-racine pour l'héritage de mappage ou que vous utilisez des mappes secondaires avec plusieurs tables, vous devez supprimer les contraintes liées aux clés externes de la base de données pour éviter les problèmes d'intégrité référentielle (instructions SQL exécutées dans un ordre erroné).

3.34 Suppression des beans d'accès lors de la migration des beans EJB 1.1 vers EJB 2.0

Etant donné que les beans d'accès ne sont pas pris en charge avec les beans enterprise dotés uniquement de vues de client local, vous pouvez être amené à les supprimer manuellement si vous migrez un bean EJB 1.1 vers EJB 2.0, ajoutez une vue du client local et supprimez la vue du client éloigné. Si vous disposez d'un bean d'accès aux classes de données, vous devez supprimer la classe de fabrique associée au bean. Si vous disposez d'un bean d'accès Copy Helper, vous devez supprimer le bean accès, la fabrique et les méthodes de la classe du bean qui pourraient être incorrectes.

3.35 Déploiement d'applications EJB avec des convertisseurs et des composeurs sur WebSphere Application Server v4.0.6

Si vous utilisez des convertisseurs et des composeurs dans le mappage EJB vers RDB et que vous effectuez le déploiement sur WebSphere Application Server v4.0.6.x, vous devez appliquer un correctif à votre serveur WebSphere Application Server. Le module eFix WAS met à jour le fichier vaprt.jar.

Le module eFix WAS s'appelle PQ76109.

Dans WebSphere Studio Application Developer version 5.1, le fichier vaprt.jar, qui contient les convertisseurs et les composeurs, a été modifié. De par ces modifications, il est nécessaire de mettre à jour le fichier vaprt.jar dans WebSphere Application Server v4.0.6. Le module eFix WAS synchronise le fichier vaprt.jar.

Si vous ne voulez pas appliquer le module eFix, vous pouvez copier le fichier vaprt.jar disponible dans le répertoire d'exécution du plug-in j2ee.core pour le placer dans le répertoire lib de l'environnement d'exécution WAS. Les convertisseurs et composeurs suivants ne sont plus à jour dans WAS v4.0.6 sans le correctif :

VapBigDecimalToBooleanConverter VapBigDecimalToDoubleConverter VapBigDecimalToFloatConverter VapBigDecimalToIntegerConverter VapBigDecimalToLongConverter VapBigDecimalToShortConverter VapTimestampToUtilDateConverter NameComposer VapUSPhoneNumberComposer

3.36 Migration de projets EJB contenant des classes binaires

Lorsque vous utilisez l'assistant de migration pour migrer un projet EJB contenant une ou plusieurs classes Java binaires (fichiers .class), la procédure migre les composants du projet contenant les fichier Java source (fichiers .java) mais ne migre pas les classes binaires. Vous devez corriger manuellement ces erreurs.

3.37 Implémentation du mappage ascendant pour les vues

Lorsque vous effectuez un mappage ascendant (génération de beans enterprise en fonction de tables existantes), par défaut l'assistant ne génère pas de beans pour les table sous-jacentes des vues. Toutefois, comme il est nécessaire de créer des relations pour les clés externes, l'assistant crée automatiquement un bean pour les tables comportant des clés externe et dont la clé primaire est référencé par une clé externe d'autres tables. Si vous désélectionnez la case à cocher indiquant de ne pas créer de beans pour les tables sous-jacentes des vues , l'assistant génère des beans pour toutes les tables et vues du schéma de la base de données.

Retour au fichier Readme principal