Effectuez la tâche ci-après pour accéder aux éléments du contexte d'internationalisation
de l'appel.
Pourquoi et quand exécuter cette tâche
Un contexte
d'internationalisation d'appel est associé à l'unité d'exécution de chaque appel à distance d'une méthode métier EJB
(Enterprise JavaBeans) ou de service de servlet. Le contexte
d'appel correspond au contexte d'internationalisation dans lequel les implémentations de
méthode de servlet et métier s'exécutent ; il est propagé lors des appels ultérieurs par
le service d'internationalisation et le logiciel intermédiaire (middleware). Cette tâche
s'applique également aux programmes client des services Web.
Procédure
- Procurez-vous les éléments du contexte d'appel désiré.
java.util.Locale myLocale;
try {
myLocale = invocationI18n.getLocale();
}
catch (IllegalStateException ise) {
// Le contexte d'appel n'est pas disponible ;
// Le service est-il démarré et activé ?
}
...
L'interface InvocationInternationalization contient les méthodes suivantes permettant d'obtenir et de définir des éléments de contexte d'internationalisation d'appel :
- Locale [] getLocales(). Renvoie la liste des paramètres régionaux d'appel
associée à l'unité d'exécution en cours.
- Locale getLocale(). Renvoie le premier paramètre de la liste des paramètres
régionaux d'appel associée à l'unité d'exécution en cours.
- TimeZone getTimeZone(). Renvoie l'appel SimpleTimeZone associé à l'unité
d'exécution en cours.
- setLocales(Locale []). Affecte la liste fournie à la liste des paramètres
régionaux d'appel associés à l'unité d'exécution en cours.
- setLocale(Locale). Affecte à la liste des paramètres régionaux d'appel
associés à l'unité d'exécution en cours une liste contenant les paramètres régionaux
fournis.
- setTimeZone(TimeZone). Affecte au fuseau horaire d'appel associé à l'unité
d'exécution en cours le fuseau horaire SimpleTimeZone fourni.
- setTimeZone(String). Affecte au fuseau horaire d'appel associé à l'unité
d'exécution en cours un fuseau horaire SimpleTimeZone dont l'ID est fourni.
L'interface InvocationInternationalization prend en charge l'accès en lecture et en
écriture au contexte d'internationalisation d'appel dans les composants d'application. Cependant, en fonction des règles de gestion de contexte d'internationalisation, seuls
les composants configurés pour gérer le contexte d'internationalisation (composants AMI
(application-managed internationalization)) ont accès en écriture aux éléments du
contexte d'internationalisation d'appel. Les appels permettant la définition des éléments
de contexte d'appel dans les composants d'application CMI (container-managed
internationalization) donnent lieu à une exception java.lang.IllegalStateException. Les différences d'utilisation des méthodes InvocationInternationalization par les composants d'application sont expliquées dans Contexte d'internationalisation.
- Utilisez les éléments du contexte d'appel pour rechercher un calcul dans les
paramètres régionaux ou le fuseau horaire du processus appelant.
DateFormat df = DateFormat.getDateInstance(myLocale);
String localizedDate = df.getDateInstance().format(aDateInstance);
...
Exemple
Dans l'exemple de code suivant, les paramètres régionaux (en,GB) et le fuseau
horaire simple (GMT) sont propagés de façon transparente lors de l'appel de la méthode
myBusinessMethod. Les composants d'application côté serveur, tels que
myEjb, peuvent utiliser l'interface InvocationInternationalization pour obtenir ces éléments de contexte.
...
//--------------------------------------------------------------------
// Définition du contexte d'appel dans lequel la méthode métier ou
// le servlet est exécuté et propagé lors des appels de méthode
// métier éloignés ultérieurs.
//--------------------------------------------------------------------
try {
invocationI18n.setLocale(new Locale("en", "GB"));
invocationI18n.setTimeZone(SimpleTimeZone.getTimeZone("GMT"));
}
catch (IllegalStateException ise) {
// S'agit-il d'un composant CMI ? Le service est-il démarré et activé ?
}
myEjb.myBusinessMethod();
Dans les composants d'application CMI, les interfaces Internationalization et
InvocationInternationalization sont équivalentes du point de vue sémantique. Vous pouvez
utiliser l'une ou l'autre de ces interfaces pour l'obtention du contexte associé à
l'unité d'exécution de ce composant. Par exemple, les deux interfaces peuvent servir à
obtenir la liste des paramètres régionaux propagés à la méthode service doPost d'un
servlet.