Führen Sie diese Task aus, um auf die Elemente des Internationalisierungskontextes des Aufrufs zuzugreifen.
Informationen zu diesem Vorgang
Jeder ferne Aufruf eines Servlet-Service oder einer EJB-Geschäftsmethode hat einen Aufrufinternationalisierungskontext, der dem Thread zugeordnet ist, der den Aufruf durchführt.
Der Aufrufkontext ist der Internationalisierungskontext, in dem die Implementierungen von Servlet- und
Geschäftsmethoden ausgeführt werden. Dieser Kontext wird vom Service zur Internationalisierung und von der Middleware
an nachfolgende Aufrufe weitergegeben.
Diese Task gilt auch für Web-Service-Clientprogramme.
Vorgehensweise
- Gewünschte Elemente des Aufrufkontextes abrufen.
java.util.Locale myLocale;
try {
myLocale = invocationI18n.getLocale();
}
catch (IllegalStateException ise) {
// Der Aufrufkontext ist nicht verfügbar.
// Ist der Service gestartet und aktiviert?
}
...
Die Schnittstelle "InvocationInternationalization" enthält die folgenden Methoden, mit denen
die Elemente von Aufrufinternationalisierungskontexten abgerufen und gesetzt werden können:
- Locale [] getLocales(). Gibt die Liste der Aufruf-Locales zurück, die dem aktuellen Thread
zugeordnet sind.
- Locale getLocale(). Gibt den ersten Eintrag aus der Liste der Aufruf-Locales zurück, die dem
aktuellen Thread zugeordnet sind.
- TimeZone getTimeZone(). Gibt die that des Aufrufs zurück, die dem aktuellen Thread
zugeordnet ist.
- setLocales(Locale []). Setzt die Liste der Aufruf-Locales, die dem aktuellen Thread zugeordnet sind,
auf die angegebene Liste.
- setLocale(Locale). Setzt die Liste der Aufruf-Locales, die dem aktuellen Thread zugeordnet sind,
auf eine Liste, die die angegebene Locale enthält.
- setTimeZone(TimeZone). Setzt die Aufrufzeitzone, die dem aktuellen Thread zugeordnet ist, auf die
angegebene SimpleTimeZone.
- setTimeZone(String). Setzt die Aufrufzeitzone, die dem aktuellen Thread zugeordnet ist, auf eine
SimpleTimeZone mit der angegebenen ID.
Die Schnittstelle "InvocationInternationalization" unterstützt den Lese- und Schreibzugriff auf den
Aufrufinternationalisierungskontext in Anwendungskomponenten.
Je nach konfigurierter Verwaltungsrichtlinie für den Internationalisierungskontext haben unter Umständen
jedoch nur die Kompontenen, die für die Verwaltung des Internationalisierungskontextes konfiguriert sind (AMI-Komponenten)
Schreibzugriff auf die Elemente des Aufrufinternationalisierungskontextes. Aufrufe zum Setzen von Elementen
des Aufrufkontextes in Komponenten von CMI-Anwendungen lösen eine Ausnahme vom Typ
java.lang.IllegalStateException aus. Der Artikel Internationalisierungskontext beschreibt die unterschiedlichen
Verwendung der InvocationInternationalization-Methoden durch die verschiedenen Anwendungskomponenten.
- Elemente des Aufrufkontextes verwenden, um Berechnungen in einer Locale oder in einer Zeitzone
des aufrufenden Prozesses durchzuführen.
DateFormat df = DateFormat.getDateInstance(myLocale);
String localizedDate = df.getDateInstance().format(aDateInstance);
...
Beispiel
Im folgenden Codebeispiel werden die Locale (en,GB)
und die einfache Zeitzone (GMT) transparent an den Aufruf der Methode "myBusinessMethod" weitergegeben.
Serverkomponenten, wie z. B.
myEjb, können diese Kontextelemente mit der Schnittstelle "InvocationInternationalization"
abrufen.
...
//--------------------------------------------------------------------
// Den Aufrufkontext, in dem die Geschäftsmethode oder
// das Servlet ausgeführt werden soll, festlegen, und
// bei nachfolgenden fernen Aufrufen von Geschäftsmethoden
// weitergeben.
//--------------------------------------------------------------------
try {
invocationI18n.setLocale(new Locale("en", "GB"));
invocationI18n.setTimeZone(SimpleTimeZone.getTimeZone("GMT"));
}
catch (IllegalStateException ise) {
// Ist die Komponente eine CMI-Komponente, ist der Service gestartet und aktiviert?
}
myEjb.myBusinessMethod();
In CMI-Anwendungskomponenten sind die Schnittstellen "Internationalization" und
"InvocationInternationalization" semantisch äquivalent. Beide Schnittstellen können verwendet
werden. um den Kontext abzurufen, der dem Thread zugeordnet ist, in dem die Komponente
ausgeführt wird. Beispielsweise kann mit beiden Schnittstellen die Liste der
Ländereinstellungen abgerufen werden, die an die Methode "doPost" des Servlet-Service weitergegeben wird.