Problemas de Acesso ao Aplicativo
Para resolver problemas encontrados quando um servlet, um arquivo JavaServer Pages, um aplicativo independente ou outro cliente tentar acessar um enterprise bean, ConnectionPool, ou outro objeto nomeado hospedado peloWebSphere Application Server, deverá primeiro verificar se o servidor de destino pode ser acessado a partir do cliente.
- Em um prompt de comandos do servidor do cliente, insira ping server_name e verifique a conectividade.
- Utilize o console administrativo para verificar se o servidor de aplicativos do recurso de destino e, se aplicável, o módulo enterprise bean (EJB) ou módulo da Web, está iniciado.
Continue somente se não houver problema de conectividade e se o recurso de destino parecer estar em execução.
- NameNotFoundException a partir da operação de consulta de JNDI
- CannotInstantiateObjectException a partir da operação de consulta de JNDI
- A mensagem NMSV0610I aparece no arquivo de log do servidor, indicando que alguma exceção de Nomenclatura ocorreu
- OperationNotSupportedException a partir da operação de Contexto de JNDI
- WSVR0046E: Falha ao ligar, ejb/jndiName: ejb/jndiName. Exceção original : org.omg.CosNaming.NamingContextPackage.AlreadyBound
- ConfigurationException a partir da operação "new InitialContext" ou a partir de uma operação de Contexto de JNDI com um nome de URL
- ServiceUnavailableException a partir da operação "new InitialContext"
- CommunicationException emitida a partir de uma operação "new InitialContext"
NMSV0605E: Um objeto de referência consultado a partir do contexto...
Se você não encontrar um problema semelhante ao seu ou se as informações fornecidas não resolverem seu problema, entre em contato com o suporte IBM® para obter assistência adicional.
NameNotFoundException a partir da operação de consulta de JNDI
Há três causas para uma exceção NameNotFoundException:
- O nome da consulta está incorreta.
- O objeto que está sendo consultado não está ligado.
- Dois servidores com o mesmo nome executando no mesmo host que está sendo utilizado para operar conjuntamente.
- Nome de Consulta Incorreto
- Se encontrar uma exceção NameNotFoundException ao tentar acessar um enterprise bean, uma origem de dados, um recurso do sistema de mensagens ou
outro recurso:
- Determine a causa da exceção NameNotFoundException.
Procure as propriedades do objeto de destino no console administrativo e verifique se o nome de JNDI (Java™ Naming and Directory Interface) especificado corresponde ao nome de JNDI que está sendo utilizado pelo cliente.
Se você estiver consultando um objeto que resida em um servidor diferente daquele a partir do qual o contexto inicial foi obtido, você deve utilizar um nome qualificado.- Se o acesso for a partir de outro objeto do servidor, por exemplo, um servlet acessando um enterprise bean, e você estiver utilizando o contexto padrão, sem especificar o nome da JNDI completo, é possível obter uma exceção NameNotFoundException caso o objeto esteja hospedado num servidor diferente.
- Se o acesso for a partir de um cliente independente, pode ser que o objeto que você está tentando acessar esteja em um servidor diferente do servidor a partir do qual você obteve o contexto inicial.
- Utilize o nome da JNDI completo para corrigir o problema.Se o objeto estiver num único servidor, o nome da JNDI completo é, como segue:
cell/nodes/nodeName/servers/serverName/jndiName
Restrição: Objetos não são suportados neste release.Se o objeto estiver num cluster de servidores, o nome da JNDI completo é como segue:cell/clusters/clusterName/jndiName
- Determine a causa da exceção NameNotFoundException.
- Objeto que está sendo consultado não está ligado
- Para corrigir uma exceção NameNotFoundException na qual o objeto que está
sendo consultado não está ligado:
- Se o objeto que está sendo consultado for um objeto de aplicativo, por exemplo, um enterprise bean, verifique se o aplicativo está em execução.
- Execute a ferramenta dumpNameSpace para visualizar os conteúdos do espaço de nomes a fim de verificar se o objeto que está sendo consultado está ligado ao espaço de nomes com o nome esperado.
- Dois servidores com o mesmo nome executando no mesmo host estão sendo utilizados para operarem conjuntamente
- Por exemplo, se um aplicativo executando em um servidor no node1 usar uma referência de objeto remota para um objeto que reside em um servidor de nome similar no node2 e ambos os nós
estiverem instalados no mesmo host, poderão ocorrer várias falhas
diferentes.
- As consultas de JNDI falham com uma NameNotFoundException.
- As referências a objetos obtidas por meio de outras consultas JNDI falham, provavelmente com uma exceção org.omg.CORBA.OBJECT_NOT_EXIST.
- Uma referência a objeto remoto é resolvida incorretamente para um objeto no processo local, porque o objeto também existe no processo local. Ou seja, uma referência a um objeto remoto no processo do servidor no node2 é resolvida incorretamente para o mesmo tipo de objeto no processo local, que é o processo do servidor no node1.
As referências a objetos entre servidores em nós diferentes e em hosts diferentes não resultam em uma exceção, mesmo se os nomes dos servidores não forem exclusivos.
Para corrigir as falhas, configure uma propriedade customizada JVM (Java Virtual Machine) para o ORB (Object Request Broker), com.ibm.websphere.orb.uniqueServerName, como true para um ou ambos os servidores:- No console administrativo, clique em .
- Na página de configuração Propriedades Customizadas, defina a propriedade customizada:
- Para Nome, especifique com.ibm.websphere.orb.uniqueServerName.
- Para Valor, especifique true.
- Clicar em OK.
- Clique em Salvar na barra de tarefas do console.
- Reinicie o servidor da aplicação.
Para evitar falhas similares com o agente do nó, você pode configurar a propriedade customizada ORB da Java virtual machine do agente do nó, com.ibm.websphere.orb.uniqueServerName, como true.
CannotInstantiateObjectException a partir da operação de consulta de JNDI
- Um objeto Java serializado está sendo consultado, mas as classes necessárias requeridas para desserializá-lo não estão no ambiente do tempo de execução.
- Um objeto Reference está sendo consultado e a fábrica associada utilizada para processá-lo como parte do processamento de consulta está falhando.
- Examine os registros relevantes para exceções imediatamente precedentes à
exceção CannotInstantiateObjectException. Se for java.lang.NoClassDefFoundError ou java.lang.ClassNotFoundException, certifique-se de que a classe referida na mensagem de erro possa ser localizada pelo carregador de classe.
Visualizar os Logs da JVM.
Visualize os registros do servidor que hospeda o recurso de destino.
- Imprima o rastreio da pilha para obter a causa raiz e procure a classe da fábrica. Ela será chamada por javax.naming.NamingManager.getObjectInstance(). A razão para a falha dependerá da implementação da fábrica e pode requerer que você entre em contato com o desenvolvedor da classe da fábrica.
A mensagem NMSV0610I aparece no arquivo de log do servidor, indicando que alguma exceção de Nomenclatura ocorreu
Esse erro é somente informativo e é fornecido no caso da exceção estar relacionada a um problema real. Na maioria das vezes, não está. Se estiver, o arquivo de log deve conter entradas adjacentes para fornecer contexto.
- Se nenhum problema estiver ocorrendo, ignore essa mensagem. Ignore a mensagem também se o problema que você está tendo não parecer estar relacionado à exceção que está sendo relatada e se não houver nenhuma outra mensagem de erro adjacente no log.
- Se estiver ocorrendo um problema, procure no log mensagens de erro subjacentes.
- As informações fornecidas na mensagem NMSV0610I podem fornecer dados de depuração valiosos para outras mensagens de erro adjacentes lançadas em resposta à exceção de Nomenclatura ocorrida.
OperationNotSupportedException a partir da operação de Contexto de JNDI
- Uma operação de atualização, como uma ligação, está sendo executada com um nome iniciado por "java:comp/env". Esse contexto e seus subcontextos são somente leitura.
- Uma operação de ligação ou religação do Contexto de um objeto não CORBA está sendo executado em um espaço de nome remoto que não pertence ao produto. Somente objetos CORBA podem ser ligados a esses espaços de nomes CosNaming.
Para determinar qual desses erros está causando o problema, verifique a mensagem de exceção completa.
WSVR0046E: Falha ao ligar, ejb/jndiName: ejb/jndiName. Exceção original : org.omg.CosNaming.NamingContextPackage.AlreadyBound
Esse erro ocorre devido a dois aplicativos do servidor do enterprise bean terem sido instalados no mesmo servidor, de forma que ocorreu um conflito de nome de ligação. Ou seja, um valor jndiName é o mesmo nos descritores de implementação dos dois aplicativos. O erro irá aparecer durante a inicialização do servidor quando o segundo aplicativo que está utilizando o valor de jndiName for iniciado.
Para assegurar-se de que esse seja o problema, examine os descritores de implementação para todos os aplicativos do servidor do enterprise bean em execução no servidor em busca de um jndiName especificado em mais de um aplicativo do enterprise bean.
Para corrigir o problema, altere os valores de jndiName duplicados para assegurar-se de que cada enterprise bean do processo do servidor esteja ligado a um nome diferente.
ConfigurationException a partir da operação "new InitialContext" ou a partir de uma operação de Contexto de JNDI com um nome de URL
Se você estiver tentando obter um contexto de JNDI inicial, uma exceção de configuração pode ocorrer devido a um valor de propriedade de JNDI inválido ter sido transmitido ao construtor InitialContext. Isso inclui propriedades de JNDI configuradas nas propriedades do Sistema ou em algum arquivo jndi.properties visível para o carregador de classe em atividade. Um URL de provedor malformado é a propriedade que, provavelmente, deve estar incorreta. Se o cliente JNDI estiver em execução como um cliente thin, de forma que o CLASSPATH esteja definido para incluir todos os arquivos jar individuais requeridos, certifique-se de que o arquivo .jar que contém o arquivo de propriedades com/ibm/websphere/naming/jndiprovider.properties esteja no CLASSPATH.
Se a exceção estiver ocorrendo a partir de uma chamada de Contexto de JNDI com um nome no formato de um URL, a configuração de JNDI atual pode não estar definida corretamente de forma que o nome de classe da fábrica requerido não pode ser determinado ou a fábrica pode não estar visível para o carregador de classe atualmente ativo. Se o nome for um Java: URL, o cliente JNDI deverá estar sendo executado em um ambiente de cliente ou servidor Java EE (Java Platform, Enterprise Edition). Ou seja, o cliente deve estar em execução em um contêiner.
Verifique a mensagem da exceção para verificar a causa.
Se a exceção estiver sendo emitida a partir do construtor InitialContext, corrija a definição da propriedade ou o CLASSPATH.
Se a exceção estiver sendo emitida a partir de um método de Contexto de JNDI, certifique-se de que a propriedade java.naming.factory.url.pkgs inclua o nome do pacote para a fábrica requerida para o esquema do URL no nome. Os nomes do URL com o esquema Java podem ser utilizados somente durante a execução em um contêiner.
CommunicationException emitida a partir de uma operação "new InitialContext"
- O nome do host ou a porta no URL do provedor está incorreto.
- O nome do host não pode ser resolvido em um endereço IP pelo servidor de nomes do domínio ou o endereço IP não corresponde ao endereço IP sob o qual o servidor está em execução.
- Um firewall do cliente ou do servidor está impedindo que a porta especificada no URL do provedor seja utilizada.
- Certifique-se de que o URL do provedor e as configurações da rede nas máquinas cliente e servidor estejam corretos.
- Certifique-se de que o nome do host possa ser resolvido em um endereço IP que pode ser alcançado pela máquina cliente. Isso pode ser feito por meio do comando ping.
- Se você estiver executando um firewall, certifique-se de que o uso da porta especificada no URL do provedor será permitida.