Erros do Serviço de Internacionalização
Determinadas condições podem fazer com que o serviço de internacionalização não seja iniciado, emita exceções java.lang.IllegalStateException enquanto um aplicativo está em execução ou pratique comportamentos padrão.
- Um componente de aplicativo tentou uma operação que não é suportada
pelo modelo de programação de internacionalização.
A exceção IllegalStateException é emitida sempre que um componente do aplicativo de servidor cujo tipo de internacionalização é definido como CMI (Container-Managed Internationalization) tentar definir o contexto de chamada. Este comportamento é uma violação da política CMI, de acordo com a qual os servlets e enterprise beans não podem modificar seu contexto de internacionalização de chamada.
- Ocorreu uma anomalia que desativou o serviço.
Por exemplo, se o serviço de internacionalização não for inicializado de forma correta, a consulta de JNDI (Java™ Naming and Directory Interface) no atributo de URL UserInternationalization emitirá uma exceção javax.naming.NameNotFoundException que contém uma instância IllegalStateException.
Se você encontrar um comportamento inesperado ou excepcional, o problema está provavelmente relacionado a uma dessas condições. Você precisa examinar o log de rastreio para investigar essas condições, o que requer a configuração do serviço de rastreio de diagnóstico para gerar mensagens sobre a função do serviço de internacionalização.
com.ibm.ws.i18n.context.*=all=enabled:com.ibm.websphere.i18n.context.*=all=enabled
O Serviço Está Desativado
O serviço de internacionalização não é inicializado quando a definição de inicialização é limpa. O serviço gera uma mensagem que indica se ele está ativado ou desativado. Os aplicativos não podem acessar a API de internacionalização quando o serviço está desativado. Se um aplicativo tentar uma consulta JNDI para obter a referência UserInternationalization, a consulta falhará com uma exceção NamingException, indicando que a referência não pode ser localizada. Além disso, o serviço não define o escopo (propaga) do contexto de internacionalização em chamadas de métodos de negócios que chegam (de partida).
O Serviço Não Está Iniciado
O serviço de internacionalização está operacional sempre que está no estado INICIADO. Por exemplo, se um aplicativo tentar acessar o contexto de internacionalização e o serviço não for iniciado, a API emitirá uma exceção IllegalStateException. Além disso, o serviço não fornece suporte ao tempo de execução para servlets e enterprise beans.
Conforme um servidor de aplicativos avança ao longo de seu ciclo de vida, ele inicializa, inicia, pára e encerra (destrói) o serviço de internacionalização. Se ocorre uma anomalia durante a inicialização, o serviço não inicia. Após o início do serviço, seu estado pode ser alterado para BLOQUEADO, caso ocorra um erro grave. O serviço gera uma mensagem para cada mudança de estado.
Se uma mensagem de rastreio indicar que o serviço não está INICIADO, examine as mensagens anteriores para determinar o problema. Por exemplo, o serviço de internacionalização não iniciará se o serviço de atividade não estiver disponível e uma mensagem for exibida nesse sentido durante a inicialização do serviço de internacionalização.
- Sem suporte ao ORB
- O serviço não pode obter uma instância do ORB (Object Request Broker). Esta condição é um erro fatal. Examine os arquivos SystemErr.log e SystemOut.log para obter informações.Nota: Esse tópico faz referência a um ou mais arquivos de log do servidor de aplicativos. Como uma recomendação alternativa, é possível configurar o servidor para usar a infraestrutura de log e rastreio do High Performance Extensible Logging (HPEL) em vez de usar os arquivos SystemOut.log , SystemErr.log, trace.log e activity.log em sistemas distribuídos e IBM® i. Também é possível usar HPEL em conjunção com os recursos de criação de log z/OS nativos. Se você estiver usando HPEL, será possível acessar todas as informações de log e rastreio usando a ferramenta de linha de comandos LogViewer a partir do diretório bin do perfil do servidor. Consulte as informações sobre a utilização do HPEL para resolução de problemas dos aplicativos para obter mais informações sobre o uso do HPEL.
- Sem suporte ao TCM
- O serviço não pode obter uma instância de seu TCM (Thread Context Manager). Esta condição é um erro fatal. Examine os arquivos SystemErr.log e SystemOut.log para obter informações.
- Sem Suporte a IIOP (Serviço de Atividade)
- O serviço não pode ser registrado no serviço de atividade. Esta condição é um erro fatal. O serviço de internacionalização não pode propagar ou receber contexto em pedidos IIOP (Internet Inter-ORB Protocol) sem suporte ao serviço de atividade. Examine os arquivos SystemErr.log e SystemOut.log para obter informações.
- Sem suporte ao AsynchBeans
- O serviço não pode ser registrado no ambiente de beans assíncronos. Este aviso indica que o ambiente de beans assíncronos não pode suportar o contexto de internacionalização.
- Sem suporte ao contêiner de EJB
- O serviço não pode ser registrado no contêiner de EJB (Enterprise JavaBeans). Este aviso indica que o serviço de internacionalização não pode suportar enterprise beans. Sem suporte ao contêiner EJB, os contextos de internacionalização não definem corretamente o escopo para métodos de negócios EJB. Reveja no log de rastreio quaisquer condições de erro relacionadas ao EJB container.
- Sem suporte ao contêiner da Web
- O serviço não pode ser registrado no contêiner da Web. Este aviso indica que o serviço de internacionalização não pode suportar servlets e arquivos JSP (JavaServer Page). Sem suporte ao contêiner da Web, os contextos de internacionalização não abrangem apropriadamente os métodos de serviços de servlet. Reveja no log de rastreio quaisquer condições de erro relacionadas ao contêiner da Web.
- Sem suporte a metadados
- O serviço não pode ser registrado com o serviço de metadados. Este aviso indica que o serviço de internacionalização não pode processar as políticas de internacionalização em descritores de implementação de aplicativos. Sem suporte a metadados, o serviço associa a política de gerenciamento de contexto de internacionalização padrão, [CMI, RunAsCaller], a cada chamada do método de ciclo de vida do servlet e do método de negócios do enterprise bean. Reveja o registro de rastreio para ver se há quaisquer condições de erro relacionadas ao serviço de metadados.
- Sem Suporte a JNDI (Serviço de Nomenclatura)
- O serviço não pode ligar o objeto UserInternationalization ao espaço de nomes. Esta condição é um erro fatal. Os componentes de aplicativo não podem acessar as referências da API do contexto de internacionalização e, portanto, não podem acessar os elementos do contexto de internacionalização. Reveja no log de rastreio quaisquer condições de erro relacionadas ao serviço Naming (JNDI).
- Sem suporte à API
- O serviço não pode obter uma instância de um objeto da API de contexto de internacionalização. Esta condição é um erro fatal. Os componentes de aplicativo não podem acessar as referências da API do contexto de internacionalização e, portanto, não podem acessar os elementos do contexto de internacionalização.
Elemento Inválido do Contexto
O serviço detectou um elemento inválido do contexto de internacionalização. Por exemplo, o serviço de internacionalização não suporta as instâncias TimeZone de um tipo diferente de java.util.SimpleTimeZone. Se o serviço encontrar um elemento não utilizável, ele registrará uma mensagem e substituirá o elemento padrão correspondente da JVM.
Elemento Ausente do Contexto
O serviço detectou um elemento ausente do contexto de internacionalização. Os pedidos que chegam (por exemplo, de servidores de aplicativos que não suportam o serviço de internacionalização) não possuem o contexto de internacionalização. Quando o serviço tenta acessar um elemento do contexto de internacionalização do responsável pela chamada (que não existe neste caso), o serviço registra em log uma mensagem e substitui o elemento padrão correspondente da JVM (Java Virtual Machine).
Sempre que possível, ative o serviço de internacionalização em todos os clientes e servidores de aplicativos de hosting que formam um aplicativo corporativo internacionalizado. Para obter informações adicionais, consulte Administrando o Serviço de Internacionalização.
Critério Inválido
O serviço de internacionalização detectou um critério malformado de internacionalização no descritor de implementação de aplicativo. O serviço substitui o atributo malformado pelo padrão apropriado. Por exemplo, se o tipo de internacionalização para um bean de entidade for definido como Application durante a execução de uma chamada dos métodos de servlet ou de negócios EJB, o serviço registrará a inconsistência e aplicará a definição Container.
Além disso, os componentes do aplicativo AMI possuem um atributo implícito de internacionalização de contêiner. Por padrão, eles são executados como servidor. O serviço aplica silenciosamente o critério implícito, [AMI, RunAsServer], e registra mensagens para esse efeito.
Atributos inválidos do contêiner de internacionalização são prováveis de ocorrer durante a especificação dos campos Locales e ID do Fuso Horário. Quando encontra códigos do idioma e IDs de fuso horário inválidos nos atributos, o serviço substitui cada valor pelo elemento padrão correspondente da JVM. Certifique-se de seguir as diretrizes fornecidas em Montando aplicativos internacionalizados.
Critério Ausente
O serviço detectou um critério ausente de internacionalização. O serviço substitui a política ausente pelo padrão apropriado. Por exemplo, se o tipo de internacionalização está ausente para um servlet ou enterprise bean, o serviço define o atributo para Container.
Os atributos de internacionalização de contêiner não são mandatórios para os componentes de aplicativos CMI. No caso de um método de servlet CMI ou de negócios EJB omitir um atributo de internacionalização de contêiner, o serviço aplica silenciosamente o critério implícito [CMI, RunAsCaller].
Quando um aplicativo não tem políticas de internacionalização em seu descritor de implementação, ou o suporte a metadados não está disponível, o serviço registra uma mensagem e aplica a política [CMI, RunAsCaller] em cada chamada do método de serviço de servlet e do método de negócios EJB.