Internationalisierungstyp
Jede Komponente einer Serveranwendung hat eine Einstellung für den Internationalisierungstyp, die anzeigt, ob der Internationalisierungskontext für den Aufruf von der Komponente oder vom übergeordneten Java EE-Container verwaltet werden soll.
- AMI (Application-Managed Internationalization)
- CMI (Container-Managed Internationalization)
Eine Serverkomponente kann mit dem Typ AMI oder CMI, aber nicht mit beiden Typen implementiert werden. CMI ist die Standardeinstellung. Diese Einstellung gilt bei jedem Aufruf für die gesamte Komponente. Entity-Beans verwenden nur CMI. EJB-Clientanwendungen haben keine Einstellung für den Internationalisierungstyp, verwenden aber implizit AMI.
AMI (Application-Managed Internationalization)
Bei Verwendung der Implementierungsrichtlinie AMI übernehmen die Entwickler der Komponenten die vollständige Steuerung des Internationalisierungskontext für den Aufruf. AMI-Komponenten können die API für Internationalisierungskontext verwenden, um die Elemente für den Aufrufkontext über das Programm zu definieren.
Es wird erwartet, dass AMI-Komponenten den Aufrufkontext verwalten. Die Aufrufe von AMI-Komponenten werden implizit mit der Standardländereinstellung und in der Standardzeitzone der übergeordneten JVM ausgeführt. Für nicht mit der API definierte Elemente des Aufrufkontexts werden standardmäßig die entsprechenden Elemente der JVM verwendet, wenn auf diese mit der API zugegriffen wird oder wenn diese in Geschäftsmethoden exportiert werden. Wenn Sie andere Kontextelemente als die JVM-Standardeinstellungen exportieren möchten, müssen AMI-Servlets, AMI-Enterprise-Beans und EJB-Clientanwendungen die Aufrufelemente mit der API für Internationalisierungskontext definieren (überschreiben). Außerdem setzt der Container Caller-Kontexte logisch aus, die in Aufrufen von lifecycle-Methoden eines AMI-Servlets oder Geschäftsmethoden von AMI-EJBs importiert wurden. Damit die Weitergabe des Kontexts des aufrufenden Prozesses fortgesetzt wird, müssen AMI-Servlets und AMI-Enterprise-Beans die API verwenden, um die Elemente des Caller-Kontexts an den Aufrufkontext zu übertragen.
Geben Sie AMI für Serverkomponenten an, deren Anforderungen bezüglich der Verwaltung von Internationalisierungskontexten nicht durch CMI unterstützt werden.
CMI (Container-Managed Internationalization)
CMI ist die bevorzugte Richtlinie für die Verwaltung von Internationalisierungskontexten für die Komponenten von Serveranwendungen und darüber hinaus auch die Standardrichtlinie. Bei CMI arbeitet der Service zur Internationalisierung mit den Web- und EJB-Containern zusammen, um den Internationalisierungskontext für Aufrufe für Servlets und Enterprise-Beans festzulegen. Der Service legt den Aufrufkontext gemäß dem Containerattribut für die Internationalisierung der Richtlinie fest, die einem Servlet (Servicemethode) oder einer EJB-Geschäftsmethode zugeordnet ist.
Eine CMI-Richtlinie enthält ein Containerattribut für die Internationalisierung, das anzeigt, welchen Internationalisierungskontext der Container einem Aufruf zuweisen soll. Nähere Einzelheiten hierzu finden Sie im Artikel Containerattribute für die Internationalisierung. Standardmäßig werden die Aufrufe von CMI-Komponenten im Internationalisierungskontext des aufrufenden Prozesses (Caller) ausgeführt, oder sie befolgen die implizite Richtlinie [CMI,RunasCaller], wenn das Servlet oder die Geschäftsmethode keinem Attribut im Implementierungsdeskriptor zugeordnet ist. Ausführliche Einzelheiten hierzu finden Sie im Artikel Internationalisierungskontext: Verwaltungsrichtlinien.
Methoden in CMI-Komponenten können mit der API für Internationalisierungskontext Elemente des Aufrufkontexts anfordern, aber nicht definieren. Jeder Versuch, Elemente des Aufrufkontexts in CMI-Komponenten zu definieren, löst eine Ausnahme vom Typ "java.lang.IllegalStateException" aus.
Legen Sie CMI für die Komponenten von Serveranwendungen fest, die eine Standardverwaltung für Internationalisierungskontexte erfordern. Geben Sie anschließend die Containerattribute für die Internationalisierung für CMI-Servlets und Geschäftsmethoden von CMI-Enterprise-Beans. an die nicht im Internationalisierungskontext des aufrufenden Prozesses ausgeführt werden sollen.