Acceso a los entornos locales y a los husos horarios de invocación

Efectúe esta tarea para acceder a los elementos del contexto de internacionalización de la invocación.

Antes de empezar

En primer lugar un componente de aplicación deberesolver una referencia al objeto InvocationInternationalization y luego enlazarlo con la interfaz InvocationInternationalization de la API del contexto de internacionalizació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

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

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


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tin_accessinvoctz
File name: tin_accessinvoctz.html