Acessando Códigos do Idioma e Fusos Horários de Chamada

Execute essa tarefa para acessar elementos do contexto de internacionalização de chamada.

Antes de Iniciar

Um componente de aplicativo deve primeiramente resolver uma referência ao objeto InvocationInternationalization e, em seguida, ligá-la à interface InvocationInternationalization da API do contexto de internacionalização.

Sobre Esta Tarefa

Cada chamada remota de um método de negócios EJB (Enterprise JavaBeans) ou um método de serviço do servlet possui um contexto de internacionalização de chamada associado ao encadeamento que está executando essa chamada. O contexto de chamada é o contexto de internacionalização sob o qual as implementações dos métodos de servlet e de negócios são executadas; ele é propagado em chamadas subsequentes pelo serviço de internacionalização e pelo middleware. Esta tarefa também se aplica a programas clientes de serviço da Web.

Procedimento

  1. Obtenha os elementos desejados do contexto de chamada.
    java.util.Locale myLocale;
    try {
      myLocale = invocationI18n.getLocale();
    }
    catch (IllegalStateException ise) {
      // O contexto de chamada não está disponível; 
      // o serviço está iniciado e ativado?  
    }
    ...
    A interface InvocationInternationalization contém os seguintes métodos para obter e definir os elementos do contexto de internacionalização de chamada:
    • Locale [] getLocales(). Retorna a lista de códigos do idioma de chamada associados ao encadeamento atual.
    • Locale getLocale(). Retorna o primeiro na lista de códigos do idioma de chamada associados ao encadeamento atual.
    • TimeZone getTimeZone(). Retorna a chamada SimpleTimeZone associada ao encadeamento atual.
    • setLocales(Locale []). Define a lista de códigos do idioma de chamada associados ao encadeamento atual para a lista fornecida.
    • setLocale(Locale). Define a lista de códigos do idioma de chamada associados ao encadeamento atual para uma lista que contém o código do idioma fornecido.
    • setTimeZone(TimeZone). Define o fuso horário de chamada associado ao encadeamento atual para o SimpleTimeZone fornecido.
    • setTimeZone(String). Define o fuso horário de chamada associado ao encadeamento atual para um SimpleTimeZone que possui o ID fornecido.

    A interface InvocationInternationalization suporta acesso de leitura e de gravação ao contexto de internacionalização de chamada em componentes de aplicativo. No entanto, de acordo com as políticas de gerenciamento de contexto de internacionalização, apenas os componentes configurados para gerenciar contexto de internacionalização (componentes AMI ou Application-Managed Internationalization) possuem acesso de gravação aos elementos do contexto de internacionalização de chamada. As chamadas para definir elementos do contexto de chamada em componentes de aplicativo CMI (Container-Managed Internationalization) resultam em uma exceção java.lang.IllegalStateException. Quaisquer diferenças em como os componentes do aplicativo podem utilizar métodos InvocationInternationalization são explicadas em Contexto de Internacionalização.

  2. Utilize os elementos do contexto de chamada para localizar uma computação sob um código do idioma ou fuso horário do processo de chamada.
    DateFormat df = DateFormat.getDateInstance(myLocale);
      String localizedDate = df.getDateInstance().format(aDateInstance);
      ...

Exemplo

No exemplo de código a seguir, o código do idioma (en,GB) e o fuso horário simples (GMT) se propagam transparentemente na chamada para o método myBusinessMethod. Os componentes do aplicativo do lado do servidor, como o myEjb, podem utilizar a interface InvocationInternationalization para obter esses elementos de contexto.
...
//--------------------------------------------------------------------
// Definir o contexto de chamada sob o qual o método de negócios ou 
// servlet será executado e propagar em chamadas de métodos de negócios 
// de métodos de negócios.
//--------------------------------------------------------------------
try {
  invocationI18n.setLocale(new Locale("en", "GB"));
  invocationI18n.setTimeZone(SimpleTimeZone.getTimeZone("GMT"));
}
catch (IllegalStateException ise) {
  // Componente CMI; o serviço está iniciado e ativado?  
}
myEjb.myBusinessMethod();

Em componentes de aplicativo CMI, as interfaces Internationalization e InvocationInternationalization são semanticamente equivalentes. Você pode utilizar qualquer uma destas interfaces para obter o contexto associado ao encadeamento no qual esse componente está em execução. Por exemplo, as duas interfaces podem ser utilizadas para obter a lista de códigos do idioma propagados para o método de serviço doPost do servlet.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tin_accessinvoctz
Nome do arquivo: tin_accessinvoctz.html