Erreurs du service d'internationalisation
Certaines conditions risquent d'être à l'origine du non démarrage du service d'internationalisation, de la génération d'exceptions java.lang.IllegalStateException pendant l'exécution d'une application ou d'un comportement par défaut du service.
- Un composant d'application a tenté une opération non prise en charge par le modèle de
programmation du service d'internationalisation.
L'exception IllegalStateException est générée chaque fois qu'un composant d'application serveur dont le type d'internationalisation est paramétré sur CMI (internationalisation gérée par conteneur) tente de définir un contexte d'appel. Il s'agit d'une violation des règles CMI selon lesquelles les servlets et les beans enterprise ne peuvent pas modifier leur contexte d'internationalisation d'appel.
- Une anomalie ayant désactivé le service s'est produite.
Par exemple, si le service d'internationalisation n'est pas correctement initialisé, la recherche avec l'interface JNDI (Java™ Naming and Directory Interface) sur l'attribut d'URL UserInternationalization génère une exception javax.naming.NameNotFoundException qui contient une instance IllegalStateException.
Si un comportement imprévu ou exceptionnel est détecté, il se peut que l'incident soit lié à une de ces conditions. Vous devez examiner le journal de trace pour étudier ces conditions, ce qui requiert la configuration du service de trace de diagnostic pour la génération de messages relatifs à la fonction du service d'internationalisation.
com.ibm.ws.i18n.context.*=all=enabled:com.ibm.websphere.i18n.context.*=all=enabled
Le service est désactivé
Le service d'internationalisation n'est pas initialisé lorsque le paramètre de démarrage n'est pas renseigné. Le service génère un message indiquant s'il est activé ou désactivé. Les applications ne peuvent pas accéder à l'API d'internationalisation lorsque le service est désactivé. Si une application tente une recherche JNDI pour obtenir la référence UserInternationalization, la recherche échoue avec une exception NamingException indiquant que la référence est introuvable. En outre, le service n'étend (propage) pas le contexte d'internationalisation lors des appels de méthode métier entrants (sortants).
Le service n'est pas démarré
Le service d'internationalisation est opérationnel chaque fois qu'il est démarré (état STARTED). Par exemple, si une application tente d'accéder au contexte d'internationalisation et que le service n'est pas démarré, l'API génère une exception IllegalStateException. En outre, le service ne fournit pas de support d'exécution pour les servlets et les beans enterprise.
Tout au long de son cycle de vie, une application initialise, démarre, arrête et détruit le service d'internationalisation. Si une anomalie se produit lors de l'initialisation, le service ne démarre pas. Une fois le service démarré, son état peut passer à BLOCKED (bloqué) si une erreur grave se produit. Le service génère une message pour tous les changements d'état.
Si un message de trace indique que le service n'est pas démarré (STARTED), consultez les messages précédents pour déterminer l'incident. Par exemple, le service d'internationalisation ne démarre pas si le service des activités n'est pas disponible et un message s'affiche à cet effet lors de l'initialisation du service d'internationalisation.
- No ORB support
- Le service ne peut pas obtenir d'instance de l'ORB (object request broker). Il s'agit d'une
erreur fatale. Pour plus d'informations, consultez les fichiers SystemErr.log et SystemOut.log.Remarque : Cette rubrique fait référence à un ou plusieurs des fichiers journaux de serveur d'applications. Il est recommandé de configurer le serveur de telle sorte qu'il utilise l'infrastructure de journalisation et de trace HPEL (High Performance Extensible Logging) à la place des fichiers SystemOut.log, SystemErr.log, trace.log et activity.log sur les systèmes distribués et IBM® i. Vous pouvez également utiliser HPEL conjointement avec vos fonctions de journalisation z/OS natives. Si vous utilisez l'infrastructure HPEL, vous pouvez accéder à toutes les informations de journalisation et de trace en utilisant l'outil de ligne de commande LogViewer à partir de votre répertoire bin de profil de serveur. Pour plus d'informations sur l'utilisation de HPEL, voir les informations sur l'utilisation de HPEL en vue du traitement des incidents liés aux applications.
- No TCM support
- Le service ne peut pas obtenir d'instance de son gestionnaire de contexte d'unité (TCM). Il s'agit d'une erreur fatale. Pour plus d'informations, consultez les fichiers SystemErr.log et SystemOut.log.
- No IIOP (activity service) support
- Le service ne peut pas s'enregistrer auprès du service des activités. Il s'agit d'une erreur fatale. Le service d'internationalisation ne peut pas propager ou recevoir de contexte sur les demandes IIOP (Internet Inter-ORB Protocol) sans la prise en charge du service des activités. Pour plus d'informations, consultez les fichiers SystemErr.log et SystemOut.log.
- No AsynchBeans support
- Le service ne peut pas s'enregistrer dans l'environnement des beans asynchrones. Cet avertissement indique que l'environnement des beans asynchrones ne peut pas prendre en charge le contexte d'internationalisation.
- No EJB container support
- Le service ne peut pas s'enregistrer auprès du conteneur d'EJB (Enterprise JavaBeans). Cet avertissement indique que le service d'internationalisation ne peut pas prendre en charge les beans enterprise. Sans la prise en charge du conteneur d'EJB, les contextes d'internationalisation ne sont pas correctement étendus aux méthodes métier EJB. Pour plus de détails sur les conditions d'erreur liées aux conteneurs d'EJB, consultez le journal de trace.
- No Web container support
- Le service n'a pas pu s'enregistrer auprès du conteneur d'EJB. Cet avertissement indique que le service d'internationalisation ne peut pas prendre en charge les servlets et les fichiers JSP (JavaServer Page). Sans le support de conteneur Web, les contextes d'internationalisation ne sont pas correctement étendus aux méthodes de service de servlet. Pour plus de détails sur les conditions d'erreur liées aux conteneurs Web, consultez le journal de trace.
- No Metadata support
- Le service ne peut pas s'enregistrer auprès du service des métadonnées. Cet avertissement indique que le service d'internationalisation ne peut pas traiter les règles d'internationalisation dans les descripteurs de déploiement d'application. Sans la prise en charge des métadonnées, le service associe les règles de gestion de contexte d'internationalisation par défaut [CMI, RunAsCaller] à tous les appels de méthode de cycle de vie de servlet et les appels de méthode métier de bean enterprise. Pour plus de détails sur les conditions d'erreur liées au service des métadonnées, consultez le journal de trace.
- No JNDI (Naming service) support
- Le service ne peut pas associer l'objet UserInternationalization à l'espace nom. Il s'agit d'une erreur fatale. Les composants d'application ne peuvent pas accéder aux références d'API du contexte d'internationalisation et ne sont donc pas en mesure d'accéder aux éléments de contexte d'internationalisation. Pour plus de détails sur les conditions d'erreur liées à l'affectation de noms (JNDI), consultez le journal de trace.
- No API support
- Le service ne peut pas obtenir une instance d'un objet API du contexte d'internationalisation. Il s'agit d'une erreur fatale. Les composants d'application ne peuvent pas accéder aux références d'API du contexte d'internationalisation et ne sont donc pas en mesure d'accéder aux éléments de contexte d'internationalisation.
Invalid context element
Le service a détecté un élément de contexte d'internationalisation incorrect. Par exemple, le service d'internationalisation ne prend pas en charge les instances TimeZone dont le type est différent de java.util.SimpleTimeZone. Si le service détecte un élément inutilisable, il consigne un message et remplace l'élément par défaut correspondant de la JVM.
Missing context element
Le service a détecté un élément de contexte d'internationalisation manquant. Les demandes entrantes (par exemple, des serveurs d'applications qui ne prennent pas en charge le service d'internationalisation) n'indiquent pas de contexte d'internationalisation. Lorsque le service tente d'accéder à un élément de contexte d'internationalisation d'appelant (qui n'existe pas dans ce cas), il consigne un message et remplace l'élément par défaut correspondant de la machine virtuelle Java.
Lorsque cela s'avère possible, activez le service d'internationalisation sur tous les clients et les serveurs d'applications d'hébergement qui constituent une application d'entreprise internationalisée. Pour plus d'informations, voir Administration du service d'internationalisation.
Règles d'administration incorrectes
Le service d'internationalisation a détecté une règle d'internationalisation syntaxiquement incorrecte dans le descripteur de déploiement d'application. Le service remplace cet attribut par l'attribut par défaut approprié. Par exemple, si le type d'internationalisation d'un bean entity a pour valeur Application lors de l'exécution d'un appel de servlet ou de méthode métier EJB, le service consigne l'incohérence et remplace la valeur par Conteneur.
De même, les composants d'application AMI ne comportent pas d'attribut d'internationalisation de conteneur implicite. Par défaut, ils s'exécutent en tant que serveur. Le service applique en mode silencieux la règle implicite [AMI, RunAsServer], puis consigne des messages à cet effet.
Des attributs d'internationalisation de conteneur incorrects sont susceptibles d'apparaître lors de la spécification des zones de paramètres régionaux et d'ID fuseau horaire. Lorsque des paramètres régionaux et des ID de fuseau horaire non valides sont détectés dans les attributs, le service remplace chaque valeur par l'élément par défaut correspondant de la JVM. Veillez à suivre les directives fournies dans Assemblage des applications internationalisées.
Règles d'administration manquantes
Le service a détecté une règle d'internationalisation manquante. Le service remplace la règle manquante par la règle par défaut appropriée. Par exemple, si le type d'internationalisation n'est pas défini pour un servlet ou un bean enterprise, le service paramètre l'attribut sur Conteneur.
Les attributs d'internationalisation de conteneur ne sont pas obligatoires pour les composants d'application CMI. Si une méthode métier EJB ou serveur CMI ne comporte pas d'attribut d'internationalisation de conteneur, le service applique en mode silencieux la règle implicite [CMI, RunAsCaller].
Lorsque des règles d'internationalisation font défaut dans le descripteur de déploiement d'une application ou que le support de métadonnées n'est pas disponible, le service consigne un message et applique la règle [CMI, RunAsCaller] à chaque appel de méthode de service de servlet ou de méthode métier EJB.