Fehler im Service zur Internationalisierung
Diese Bedingungen können dazu führen, dass der Service zur Internationalisierung nicht gestartet wird, dass Ausnahmen des Typs "java.lang.IllegalStateException" ausgelöst werden oder Standardverhalten eingeleitet werden.
- Eine Anwendungskomponente hat versucht, eine Operation auszuführen, die vom Programmiermodell des
Service nicht unterstützt wird.
Die Ausnahme "IllegalStateException" wird ausgelöst, wenn eine Komponente einer Serveranwendung mit dem Internationalisierungstyp CMI versucht, den Aufrufkontext festzulegen. Dies ist ein Verstoß gegen die CMI-Richtlinie, die festlegt, dass Servlets und Enterprise-Beans ihren Internationalisierungskontext für den Aufruf nicht ändern dürfen.
- Es ist eine Anomalie aufgetreten, die den Service inaktiviert hat.
Wenn der Service zur Internationalisierung nicht ordnungsgemäß initialisiert ist, setzt beispielsweise die JNDI-Lookup-Operation für das URL-Attribut UserInternationalization eine Ausnahme des Typs "javax.naming.NameNotFoundException" ab, die eine Instanz der Ausnahme "IllegalStateException" enthält.
Sollte sich ein unerwartetes oder außergewöhnliches Verhalten der Anwendung feststellen, ist das Problem wahrscheinlich auf eine dieser Bedingungen zurückzuführen. Sie müssen diese Bedingungen anhand des Traceprotokolls untersuchen. Voraussetzung hierfür ist, dass Sie den Diagnosetraceservice konfigurieren, damit Nachrichten über den Service zur Internationalisierung generiert werden.
com.ibm.ws.i18n.context.*=all=enabled:com.ibm.websphere.i18n.context.*=all=enabled
Service ist inaktiviert
Der Service zur Internationalisierung wird nicht initialisiert, wenn die Starteinstellung gelöscht ist. Der Service generiert eine Nachricht, die Aufschluss darüber gibt, ob er aktiviert oder inaktiviert ist. Anwendungen können nicht auf die API für die Internationalisierung zugreifen, wenn der Service inaktiviert ist. Falls eine Anwendung versucht, die JNDI-Funktion "lookup" auszuführen, um die UserInternationationlization-Referenz abzurufen, schlägt die lookup-Funktion mit der Ausnahme NamingException fehl. Diese Ausnahme weist darauf hin, dass die Referenz nicht gefunden wurde. Außerdem weist der Service eingehenden (abgehenden) Aufrufen von Geschäftsmethoden keinen Internationalisierungskontext zu.
Service ist nicht gestartet
Der Service zur Internationalisierung ist funktionsbereit, sobald er gestartet ist. Wenn eine Anwendung beispielsweise versucht, auf den Internationalisierungskontext zuzugreifen, und der Service nicht gestartet ist, löst die API eine Ausnahme vom Typ "IllegalStateException" aus. Außerdem bietet der Service keine Laufzeitunterstützung für Servlets und Enterprise-Beans.
Ein Anwendungsserver initialisiert, startet, stoppt und beendet (löscht) den Service zur Internationalisierung. Sollte während der Initialisierung eine Anomalie auftreten, wird der Service nicht gestartet. Sobald der Service gestartet ist, kann sich sein Status in BLOCKIERT ändern, falls ein schwerwiegender Fehler auftritt. Der Service generiert bei jeder Statusänderung eine Nachricht.
Falls eine Tracenachricht darauf hinweist, dass der Service nicht GESTARTET ist, sollten Sie die vorherigen Nachrichten untersuchen, um den Fehler zu bestimmen. Der Internationalization Service wird beispielsweise nicht gestartet, wenn der Activity-Service nicht verfügbar ist und während der Initialisierung des Service zur Internationalisierung eine diesbezügliche Nachricht angezeigt wird.
- No ORB support
- Der Service kann keine Instanz des Object Request Broker (ORB) anfordern.
Dies ist ein schwerwiegender Fehler. Suchen Sie in den Dateien SystemErr.log und SystemOut.log nach Informationen.
Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log, trace.log und activity.log auf verteilten oder IBM® i-Systemen. Sie können HPEL auch in Verbindung mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.
- No TCM support
- Der Service kann keine Instanz seines Threadkontextmanagers abrufen. Dies ist ein schwerwiegender Fehler. Suchen Sie in den Dateien SystemErr.log und SystemOut.log nach Informationen.
- No IIOP (activity service) support
- Der Service kann sich nicht beim Activity-Service registrieren. Dies ist ein schwerwiegender Fehler. Der Service zur Internationalisierung kann ohne die Unterstützung des Activity-Service keinen Kontext in IIOP-Anforderungen weitergeben oder empfangen. Suchen Sie in den Dateien SystemErr.log und SystemOut.log nach Informationen.
- No AsynchBeans support
- Der Service kann sich nicht bei der AsynchBeans-Umgebung registrieren. Diese Warnung weist darauf hin, dass die AsynchBeans-Umgebung keinen Internationalisierungskontext unterstützt.
- No EJB container support
- Der Service kann sich nicht beim EJB-Container registrieren. Diese Warnung weist darauf hin, dass der Service zur Internationalisierung keine Enterprise-Beans unterstützt. Ohne die Unterstützung von EJB-Containern können die Internationalisierungskontexte den EJB-Geschäftsmethoden nicht ordnungsgemäß zugewiesen werden. Überprüfen Sie das Traceprotokoll auf Fehlerbedingungen für EJB-Container.
- No Web container support
- Der Service kann sich nicht beim Web-Container registrieren. Diese Warnung weist darauf hin, dass der Service zur Internationalisierung keine Servlets und JSP-Dateien unterstützt. Ohne die Unterstützung von Web-Containern können die Internationalisierungskontexte den Methoden des Servlet-Service nicht ordnungsgemäß zugewiesen werden. Überprüfen Sie das Traceprotokoll auf Fehlerbedingungen für Web-Container.
- No Metadata support
- Der Service kann sich nicht beim Metadatenservice registrieren. Diese Warnung weist darauf hin, dass der Service zur Internationalisierung die Internationalisierungsrichtlinie in Anwendungsimplementierungsdeskriptoren nicht verarbeiten kann. Ohne die Unterstützung von Metadaten ordnet der Service jedem Aufruf der Lifecycle-Methoden von Servlets und der Geschäftsmethoden von Enterprise-Beans die Standardverwaltungsrichtlinie für Internationalisierungskontexte ([CMI, RunAsCaller] zu. Überprüfen Sie das Traceprotokoll auf Fehlerbedingungen, die sich auf den Metadatenservice beziehen.
- No JNDI (Naming service) support
- Der Service kann das UserInternationalization-Objekt nicht an den Namespace binden. Dies ist ein schwerwiegender Fehler. Die Anwendungskomponenten können nicht auf die Referenzen für die API für Internationalisierungskontext und damit auch nicht auf die Elemente des Internationalisierungskontextes zugreifen. Überprüfen Sie das Traceprotokoll auf Fehlerbedingungen für den Namensservice (JNDI).
- No API support
- Der Service kann keine Instanz eines Objekts der API für Internationalisierungskontext abrufen. Dies ist ein schwerwiegender Fehler. Die Anwendungskomponenten können nicht auf die Referenzen für die API für Internationalisierungskontext und damit auch nicht auf die Elemente des Internationalisierungskontextes zugreifen.
Invalid context element
Der Service hat ein ungültiges Element im Internationalisierungskontext gefunden. Beispielsweise könnte der Service zur Internationalisierung keine TimeZone-Instanzen eines anderen Typs als java.util.SimpleTimeZone unterstützen. Wenn der Service ein ungültiges Element findet, zeichnet er eine Nachricht auf und ersetzt das ungültige Element durch das entsprechende Standardelement der JVM.
Missing context element
Der Service hat festgestellt, dass ein Element im Internationalisierungskontext fehlt. Eingehende Anforderungen (z. B. von Anwendungsservern, die den Service zur Internationalisierung nicht unterstützen) enthalten keinen Internationalisierungskontext. Wenn der Service versucht, auf ein Element eines Caller-Internationalisierungskontextes zuzugreifen, das nicht vorhanden ist, zeichnet der Service eine Nachricht auf und fügt das entsprechende Standardelement der JVM ein.
Der Service zur Internationalisierung sollte nach Möglichkeit in allen Clients und übergeordneten Anwendungsservern aktiviert werden, aus denen sich eine für den internationalen Einsatz konzipierte Unternehmensanwendung zusammensetzt. Nähere Informationen finden Sie im Artikel Service zur Internationalisierung verwalten.
Invalid policy
Der Service zur Internationalisierung hat im Anwendungsimplementierungsdeskriptor eine Internationalisierungsrichtlinie mit einem falschen Format gefunden. Der Service ersetzt das ungültige Attribut durch die entsprechenden Standardeinstellung. Wenn der Internationalisierungstyp einer Entity-Bean während der Durchführung eines Aufrufs eines Servlets oder einer EJB-Geschäftsmethode beispielsweise auf Anwendung gesetzt wird, zeichnet der Service diese Inkonsistenz auf und erzwingt stattdessen die Einstellung Container.
Außerdem haben AMI-Anwendungskomponenten ein implizites Containerattribut für die Internationalisierung. Standardmäßig werden diese Komponenten als Server ausgeführt. Der Service setzt automatisch die implizite Richtlinie [AMI, RunAsServer] in Kraft und zeichnet diesbezügliche Nachrichten auf.
Ungültige Containerattribute für die Internationalisierung sind häufig auf falsche Angeben in den Feldern "Locales" und "Zeitzonen-ID" zurückzuführen. Falls der Service ungültige Locales und Zeitzonen-IDs in Attributen findet, ersetzt er sie durch die entsprechenden Standardelemente der JVM. Folgen Sie unbedingt den Anleitungen im Artikel International verwendbare Anwendungen assemblieren.
Missing policy
Der Service hat festgestellt, dass eine Internationalisierungsrichtlinie fehlt. Der Service setzt die entsprechende Standardrichtlinie ein. Wenn beispielsweise der Internationalisierungstyp für ein Servlet oder eine Enterprise-Bean fehlt, setzt der Service das Attribut auf "Container".
Die Containerattribute für die Internationalisierung sind für CMI-Anwendungskomponenten nicht zwingend. Sollte für ein CMI-Servlet oder eine CMI-EJB-Geschäftsmethode kein Containerattribut für die Internationalisierung angegeben sein, setzt der Service automatisch die implizite Richtlinie [CMI, RunAsCaller].
Wenn im Anwendungsimplementierungsdeskriptor keine Internationalisierungsrichtlinien angegeben sind oder die Unterstützung für Metadaten nicht verfügbar ist, zeichnet der Service eine Nachricht auf und wendet die Richtlinie [CMI, RunAsCaller] auf jeden Aufruf einer Methode eines Servlet-Service oder einer EJB-Geschäftsmethode an.