Auf Ländereinstellung und Zeitzonen des Aufrufes zugreifen

Führen Sie diese Task aus, um auf die Elemente des Internationalisierungskontextes des Aufrufs zuzugreifen.

Vorbereitende Schritte

Eine Anwendungskomponente muss zuerst eine Referenz auf das Objekt InvocationInternationalization auflösen und diese dann an die Schnittstelle "InvocationInternationalization" der API für Internationalisierungskontext binden.

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

  1. 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.

  2. 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.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tin_accessinvoctz
Dateiname:tin_accessinvoctz.html