Internationalisierungskontext
Ein Internationalisierungskontext ist eine verteilbare Sammlung von Internationalisierungsinformationen, die eine geordnete Liste oder Kette mit Ländereinstellungen und einer Zeitzone, wobei die Ländereinstellungen und die Zeitzone Instanzen der Java™-SDK-Typen "java.util.Locale" und "java.util.TimeZone" sind. Eine Kette von Ländereinstellungen wird gemäß den Vorgaben des Benutzers geordnet.
Der Service zur Internationalisierung verwaltet zwei Varianten von Internationalisierungskontexten und stellt diese zur Verfügung: den Caller-Kontext, der die Lokalisierungsumgebung des Aufrufenden (Caller) darstellt, und den Aufrufkontext, der die Lokalisierungsumgebung darstellt, in der eine Geschäftsmethode ausgeführt wird. Die Komponenten der Serveranwendung verwenden Elemente der Caller- und Aufrufkontexte, um Locale- und zeitzonenabhängige Berechnungen ordnungsgemäß anzupassen.
Der Service zur Internationalisierung unterstützt nur den Zeitzonentyp "java.util.SimpleTimeZone" aus dem Java SDK. Nicht unterstützte Zeitzonentypen, die den Methoden der API für Internationalisierungskontext übergeben werden, werden unbemerkt der Standardzeitzone der JVM zugeordnet. Eine vollständige Beschreibung der Typen java.util.Locale, java.util.TimeZone und java.util.SimpleTimeZone finden Sie in der API-Dokumentation zum Java SDK.
Caller-Kontext
Der Internationalisierungskontext des aufrufenden Prozesses (Caller) enthält die Locale-Kette und Zeitzone aus den empfangenen Aufrufen für EJB-Geschäftsmethoden und Servlet-Servicemethoden. Es handelt sich um den Internationalisierungskontex, der vom aufrufenden Prozess weitergegeben wird. Verwenden Sie in den Komponenten der Serveranwendung Elemente des Caller-Kontextes, um Berechnungen für den aufrufenden Prozess zu lokalisieren. Der Caller-Kontext ist schreibgeschützt und über die Schnittstelle Internationalization der API für Internationalisierungskontext für alle Anwendungskomponenten zugänglich.
Der Caller-Kontext wird wie folgt berechnet: Beim Aufruf einer EJB-Geschäftsmethode oder Servlet-Servicemethode extrahiert der Service zur Internationalisierung den Internationalisierungskontext aus der eingehenden Anforderung und gibt diesen Kontext als Caller-Kontext an die Methode weiter. Sollte ein Kontextelement fehlen oder null sein, fügt der Service das entsprechende Standardelement der JVM ein (z. B. java.util.Locale.getDefault() oder java.util.TimeZone.getDefault().) Der Service führt eine ähnliche Einfügeoperation durch, wenn in Aufrufen von Stateless-Session-Beans, die Web-Services unterstützen, Elemente für den Caller-Kontext fehlen oder leer sind.
Formal ist der Caller-Kontext der Aufrufkontext der aufrufenden Geschäftsmethode oder Anwendungskomponente.
Aufrufkontext
Der Internationalisierungskontext für den Aufruf enthält die Locale-Kette und die Zeitzone, in der die EJB-Geschäftsmethoden und Servlet-Servicemethoden ausgeführt werden. Er wird je nach anzuwendender Internationalisierungsrichtlinie entweder vom Host-Container oder von der Anwendungskomponente verwaltet. In abgehenden Geschäftsmethodenanforderungen ist dies der Kontext, der an den Zielprozess weitergegeben wird. Verwenden Sie die Elemente des Aufrufkontextes, um Berechnungen unter Verwendung der definieren Einstellungen der aktuellen Anwendungskomponente zu lokalisieren.
Der Aufrufkontext wird wie folgt berechnet. Beim Aufruf einer eingehenden Geschäftsmethode oder Servlet-Servicemethode fragt der Service zur Internationalisierung die zugehörige Richtlinie für die Kontextverwaltung ab. Falls die Richtlinie eine CMI-Richtlinie (Container-Managed Internationalization, containergesteuerte Internationalisierung) ist, gibt der Container den in der Richtlinie definierten Kontext an den Aufruf weiter. Ist die Richtlinie eine AMI-Richtlinie (Application-Managed Internationalization, anwendungsgesteuerte Internationalisierung), gibt der Container einen leeren Kontext an den Aufruf weiter, der von der Methodenimplementierung geändert werden kann.
Die Anwendungskomponenten können über die Schnittstellen Internationalization und InvocationInternationalization der API für Internationalisierungskontext auf die Elemente des Aufrufkontextes zugreifen. Die Elemente des Aufrufkontextes können nur mit der AMI-Richtlinie definiert (überschrieben) werden.
Bei einer abgehenden Geschäftsmethodenanforderung ruft der Service den derzeit zugewiesenen Aufrufkontext ab und hängt ihn an die Anforderung an. Dieser abgehende, exportierte Kontext wird der Caller-Kontext des Zielaufrufs. Bei der Angabe von Elementen des Aufrufkontextes für den Export abgehender Anforderungen oder über die API verwendet der Service zur Internationalisierung immer das zuletzt mit der API definierte Element. Außerdem stellt der Service für alle Nullelemente eines Aufrufkontextes die entsprechenden Standardelemente der JVM bereit.
Weil der Internationalisierungskontext, der unter Verwendung von Web-Service-Anforderungen (SOAP) weitergegeben wird, eine Zeitzonen-ID und nicht den gesamten Status eines Objekts java.lang.SimpleTimeZone enthält, können die Zeitzoneninformationen verloren gehen, wenn ein Clientprogramm oder eine Session-Bean mit Unterstützung von Web-Services an der Verarbeitung ferner Businesses beteiligt ist.