Tipo de Internacionalização
Cada componente de aplicativo do servidor tem uma configuração de tipo de internacionalização que indica se o contexto de internacionalização da chamada é gerenciado pelo componente ou pelo contêiner do Java™ EE de hosting.
- AMI (Application-Managed Internationalization)
- CMI (Container-Managed Internationalization)
Um componente de servidor pode ser implementado como AMI ou CMI, mas não como ambos; CMI é o padrão. A definição aplica-se a todo o componente em cada chamada. Os beans de entidade utilizam apenas CMI. Os aplicativos clientes EJB (Enterprise JavaBeans) não têm uma configuração de tipo de internacionalização; eles utilizam AMI implicitamente.
Application-Managed Internationalization
Sob o critério de implementação AMI, os desenvolvedores de componentes assumem controle total sobre o contexto de internacionalização de chamada. Os componentes AMI podem utilizar a API do contexto de internacionalização para definir programaticamente os elementos do contexto de chamada.
Os componentes AMI devem gerenciar o contexto de chamada. As chamadas de componentes AMI executam implicitamente sob o locale e fuso horário padrão da JVM de hospedagem. Os elementos do contexto de chamada não definidos utilizando a API assumem como padrão os elementos correspondentes da JVM, quando acessados por meio da API ou quando exportados nos métodos de negócios. Para exportar elementos do contexto diferentes dos padrões da JVM, os servlets AMI, os beans corporativos AMI e os aplicativos clientes EJB devem definir (sobrescrever) elementos de chamada utilizando a API do contexto de internacionalização. Além disso, o contêiner suspende logicamente o contexto do responsável pela chamada importado para o método de ciclo de vida do servlet AMI e as chamadas de métodos de negócios EJB AMI. Para continuar propagando o contexto do processo de chamada, os servlets e os beans corporativos do AMI devem utilizar a API para transferir elementos do contexto de responsável pela chamada para o contexto de chamada.
Especifique AMI para componentes do servidor que possuem requisitos de gerenciamento de contexto de internacionalização não suportados por CMI (Container-Managed Internationalization).
Container-Managed Internationalization
CMI é o critério de gerenciamento de contexto de internacionalização preferencial para os componentes de aplicativo servidor; ele também é o critério padrão. No CMI, o serviço de internacionalização colabora com os contêineres da Web e de EJB para definir o contexto de internacionalização da chamada para servlets e beans corporativos. O serviço define o contexto de chamada de acordo com o atributo de internacionalização de contêiner da política associada a um servlet (método de serviço) ou método de negócios EJB.
Uma política CMI possui um atributo de internacionalização do contêiner que indica qual contexto de internacionalização terá seu escopo definido para uma chamada. Para obter detalhes, consulte Atributos de Internacionalização do Contêiner. Por padrão, as chamadas de componentes CMI são executadas sob o contexto de internacionalização do responsável pela chamada; ou melhor, elas aderem ao critério implícito [CMI,RunasCaller] sempre que o servlet ou negócio não está associado a um atributo no descritor de implementação. Para obter detalhes completos, consulte Contexto de Internacionalização: Políticas de Gerenciamento.
Os métodos nos componentes CMI podem obter elementos do contexto de chamada utilizando a API do contexto de internacionalização, mas não podem defini-los. Qualquer tentativa de definir elementos do contexto de chamada nos componentes CMI resulta em uma exceção java.lang.IllegalStateException.
Especifique Container-Managed Internationalization para componentes do aplicativo de servidor que requerem gerenciamento do contexto de internacionalização padrão. Em seguida, especifique os atributos de internacionalização do contêiner para servlets CMI e para métodos de negócios de beans corporativos CMI que você não deseja que sejam executados sob o contexto de internacionalização do responsável pela chamada.