Efectúe esta tarea para acceder a los elementos del contexto de
internacionalización de la invocación.
Acerca de esta tarea
Toda invocación remota de un método de empresa EJB
(Enterprise JavaBeans) o un servicio de servlet tiene un contexto de internacionalización
de invocación asociado a la hebra que ejecuta dicha invocación. El contexto de invocación
es el contexto de internacionalización bajo el que se ejecutan las implementaciones de
los métodos servlet y de empresa; se propaga en invocaciones posteriores por el servicio
de internacionalización y middleware. Esta tarea se aplica también a los programas
cliente del servicio web.
Procedimiento
- Obtenga los elementos del contexto de invocación deseados.
java.util.Locale myLocale;
try {
myLocale = invocationI18n.getLocale();
}
catch (IllegalStateException ise) {
// El contexto de invocación no está disponible;
// ¿Está el servicio arrancado y habilitado?
}
...
La interfaz InvocationInternationalization contiene los métodos siguientes
para obtener (get) y establecer (set) los elementos de contexto de
internacionalización de invocación:
- Locale [] getLocales(). Devuelve la lista de entornos locales de la invocación
asociada a la hebra actual.
- Locale getLocale(). Devuelve el primer elemento de la lista de entornos
locales de la invocación asociada a la hebra actual.
- TimeZone getTimeZone(). Devuelve la invocación de SimpleTimeZone
asociada a la hebra actual.
- setLocales(Locale []). Establece la lista de entornos locales de la invocación
asociada a la hebra actual, en la lista proporcionada.
- setLocale(Locale). Establece la lista de entornos locales de la invocación
asociada a la hebra actual, en una lista que contiene el entorno local proporcionado.
- setTimeZone(TimeZone). Establece la zona horaria de la invocación asociada a
la hebra actual, en el SimpleTimeZone proporcionado.
- setTimeZone(String). Establece la zona horaria de la invocación asociada a la
hebra actual, en SimpleTimeZone, con el id. proporcionado.
La interfaz InvocationInternationalization permite acceso de lectura y
grabación al contexto de internacionalización de la invocación dentro de componentes de
aplicación. No obstante, según las políticas de gestión del contexto de internacionalización, sólo
los componentes configurados para gestionar el contexto de internacionalización
(componentes AMI, internacionalización gestionada por contenedor) tienen acceso de
grabación a los elementos del contexto de internacionalización. Las llamadas para
establecer los elementos del contexto de invocación dentro de componentes de aplicación
CMI (internacionalización gestionada por contenedor) generan una excepción
java.lang.IllegalStateException. Cualquier diferencia sobre cómo los componentes de la aplicación pueden utilizar los métodos
InvocationInternationalization se describe en el tema Contexto de internacionalización.
- Utilice los elementos del contexto de invocación para localizar los cálculos
de un entorno local o huso horario del proceso que efectúa la llamada.
DateFormat df = DateFormat.getDateInstance(myLocale);
String localizedDate = df.getDateInstance().format(aDateInstance);
...
Ejemplo
En el ejemplo de código siguiente, el entorno local (en,GB)
y la zona horaria sencilla (GMT) se propagan de forma transparente en la llamada al
método myBusinessMethod. Los componentes de aplicación del lado del servidor, como
myEjb,
puede utilizar la interfaz InvocationInternationalization para obtener estos elementos de contexto.
...
//--------------------------------------------------------------------
// Establezca el contexto de invocación bajo el que se ejecutará el
// método de empresa o servlet y se propagará a las invocaciones
// posteriores del método de empresa.
//--------------------------------------------------------------------
try {
invocationI18n.setLocale(new Locale("en", "GB"));
invocationI18n.setTimeZone(SimpleTimeZone.getTimeZone("GMT"));
}
catch (IllegalStateException ise) {
// ¿Está el componente CMI?. ¿Está el servicio arrancado y habilitado?
}
myEjb.myBusinessMethod();
En los componentes de aplicación can, la interfaces Internationalization e
InvocationInternationalization son semánticamente equivalentes.
Puede utilizar cualquiera de estas dos interfaces para obtener el contexto asociado a la
hebra en la que se ejecuta el componente. Por ejemplo, ambas interfaces se pueden utilizar para obtener la
lista de los entornos locales propagados al método de servicio doPost del servlet.