Contexto de Internacionalização
Um contexto de internacionalização é uma coleta distribuível de informações de internacionalização contendo uma lista ordenada, ou cadeia, de códigos do idioma e um único fuso horário, em que os códigos do idioma e o fuso horário são instâncias dos tipos Java SDK java.util.Locale e java.util.TimeZone Java™ SDK, respectivamente. Uma cadeia de códigos do idioma é ordenada de acordo com a preferência do usuário.
O serviço de internacionalização gerencia e disponibiliza duas variedades de contexto de internacionalização: o contexto de responsável pela chamada, que representa o ambiente de localização do responsável pela chamada e o contexto de chamada, que representa o ambiente de localização sob o qual um método de negócios é executado. Componentes de aplicativos servidor utilizam elementos dos contextos de internacionalização de responsável pela chamada e de chamada para adaptar-se apropriadamente às computações sensíveis ao locale e ao fuso horário.
O serviço de internacionalização não suporta tipos de fuso horário diferentes do tipo java.util.SimpleTimeZone, que é encontrado no Java SDK. Os tipos não suportados de fuso horário são mapeados silenciosamente para o fuso horário padrão da JVM quando fornecidos para os métodos de API do contexto de internacionalização. Para obter uma descrição completa dos tipos java.util.Locale, java.util.TimeZone e java.util.SimpleTimeZone, consulte a documentação da API do Java SDK.
Contexto de Responsável pela Chamada
O contexto de internacionalização de responsável pela chamada contém a cadeia de locales e o fuso horário recebidos nas chamadas de entrada dos métodos de negócios EJB e dos métodos de serviços de servlet; ele é o contexto de internacionalização propagado a partir do processo de chamada. Utilize os elementos do contexto de responsável pela chamada nos componentes de aplicativos servidor para localizar cálculos para o componente de chamada. O contexto do responsável pela chamada é de leitura e pode ser acessado por todos os componentes de aplicativo, utilizando a interface Internationalization da API do contexto de internacionalização.
O contexto de responsável pela chamada é computado da seguinte maneira: Em uma chamada do método de negócios EJB ou do método de serviços de servlet, o serviço de internacionalização extrai o contexto de internacionalização do pedido de entrada e abrange esse contexto no método como o contexto de responsável pela chamada. Para qualquer elemento de contexto nulo ou ausente, o serviço insere o elemento padrão correspondente da JVM (por exemplo, java.util.Locale.getDefault() ou java.util.TimeZone.getDefault().) O serviço executa uma inserção semelhante sempre que elementos nulos ou ausentes do contexto de Responsável pela Chamada são encontrados nas chamadas de beans de sessão sem estado que estão ativadas para os serviços da Web.
Formalmente, o contexto de responsável pela chamada é o contexto de chamada do método de negócios de chamada ou do componente de aplicativo.
Contexto de Chamada
O contexto de internacionalização de chamada contém a cadeia de códigos do idioma e o fuso horário no qual os métodos de negócios EJB e de serviço de servlet são executados. Ele é gerenciado pelo contêiner de hospedagem ou pelo componente de aplicativo, dependendo do critério de internacionalização aplicável. Em pedidos de saída do método de negócios, é o contexto que se propaga para o processo de destino. Utilize os elementos do contexto de chamada para localizar computações sob as definições especificadas do componente de aplicativo atual.
O contexto de chamada é computado da seguinte maneira: Em uma chamada de entrada do método de negócios ou do método de serviços de servlet, o serviço de internacionalização consulta o critério associado de gerenciamento de contexto. Se a política for CMI (Container-Managed Internationalization), o contêiner definirá o escopo do contexto designado pela política para a chamada; do contrário, a política será AMI (Application-Managed Internationalization) e o contêiner definirá o escopo de um contexto vazio para a chamada que pode ser alterada pela implementação do método.
Os componentes de aplicativo podem acessar elementos do contexto de chamada por meio das interfaces Internationalization e InvocationInternationalization da API do contexto de internacionalização. Os elementos do contexto de chamada podem ser definidos (sobrescritos) apenas sob o critério AMI (Application-Managed Internationalization).
Em um pedido de saída do método de negócios, o serviço obtém o contexto de chamada atualmente abrangido e o anexa ao pedido. Esse contexto de saída exportado torna-se o contexto de responsável pela chamada da chamada de destino. Ao fornecer elementos de contexto de chamada, para exportação de pedidos que saem ou por meio da API, o serviço de internacionalização sempre fornece o elemento mais recente definido utilizando a API; o serviço também fornece o elemento padrão correspondente da JVM para qualquer elemento do contexto de chamada nulo.
Como o contexto de internacionalização que é propagado por meio dos pedidos de serviços da Web (SOAP) contém um ID de fuso horário diferente do estado inteiro de um objeto java.lang.SimpleTimeZone, as informações de fuso horário podem ser perdidas quando um programa cliente ou bean de sessão ativado para serviços da Web ficar envolvido na computação de negócios remotos.