Provedor de sistemas de mensagens padrão: Dicas de resolução de problemas

Use este conjunto de dicas específicas para ajudá-lo a solucionar problemas do sistema de mensagens do JMS com o provedor de sistemas de mensagens.

Para obter dicas gerais sobre resolução de problemas com o sistema de mensagens do WebSphere Application Server, consulte Dicas de Resolução de Problemas do Sistema de Mensagens. Este tópico fornece dicas adicionais específicas ao provedor de sistema de mensagens padrão e seu uso de tecnologias de integração de serviços.

Um destino se torna completo e pode não receber nenhuma outra mensagem, pois as mensagens existentes não estão sendo consumidas.

Ao configurar um aplicativo para utilizar o provedor do sistema de mensagens padrão, você o associa a um dos seguintes conjuntos de recursos:
  • Um ou mais beans de mensagens conectados por meio das especificações de ativação do JMS (Java™ Message Service).
  • Um ou mais enterprise beans conectados por meio dos connection factories e dos destinos do JMS.

É possível utilizar o seguinte painel de console administrativo para inspecionar a configuração dos aplicativos e recursos JMS que estão utilizando o destino: Recursos de Aplicativo para este Destino.

Esse painel pode ajudá-lo a encontrar a causa do problema, fornecendo-lhe uma visualização de alto nível de vários recursos relevantes.

Um aplicativo JMS não pode mais enviar ou receber mensagens

Ao configurar um aplicativo para utilizar o provedor do sistema de mensagens padrão, você o associa a um dos seguintes conjuntos de recursos:
  • Um ou mais beans de mensagens conectados por meio das especificações de ativação do JMS (Java Message Service).
  • Um ou mais enterprise beans conectados por meio dos connection factories e dos destinos do JMS.

O aplicativo é conectado aos beans de mensagens ou enterprise beans por meio do descritor de implementação do aplicativo ou por meio do código do próprio aplicativo. Se você conectou seu aplicativo por meio do descritor de implementação, poderá utilizar o seguinte painel de console administrativo para visualizar o aplicativo de negócios instalado como um todo e inspecionar a configuração dos recursos JMS que estão sendo utilizados pelo aplicativo: Recursos do Sistema de Mensagens para este Aplicativo.

Esse painel pode ajudá-lo a encontrar a causa do problema, fornecendo-lhe uma visualização de alto nível de vários recursos relevantes.

Aplicativos clientes JMS em execução no contêiner do cliente Java Platform, Enterprise Edition (Java EE) falham ao chamar o método ConnectionFactory.createConnection

Quando um aplicativo cliente JMS estiver sendo executando no contêiner do cliente Java EE, em uma máquina que não esteja executando nenhum outro processo do WebSphere Application Server, uma chamada ao método ConnectionFactory.createConnection poderá falhar com o seguinte erro:
CWSIJ0005E: Uma instância do serviço de estrutura de canal a ser usada para comunicação 
recurso não pode ser localizado.
Causa

O ConnectionFactory para o fornecedor de sistema de mensagens padrão possui uma dependência no Serviço de Estrutura do Canal. Ele localiza o Serviço de Estrutura do Canal usando uma consulta no espaço de nomes JNDI. Para conectar-se a um serviço de nomenclatura, o ConnectionFactory usa um objeto InitialContext criado usando o construtor padrão.

Quando o cliente JMS estiver sendo executado em um ambiente do servidor de aplicativos, o objeto InitialContext é capaz de se conectar com êxito ao serviço de nomenclatura, o Serviço de Estrutura de Canal é localizado e a chamada ao createConnection é concluída com êxito.

Entretanto, quando o cliente JMS estiver sendo executado no contêiner do cliente Java EE, o objeto InitialContext utilizará o valor da propriedade de sistema java.naming.provider.url para determinar o local do serviço de nomenclatura ao qual conectar-se. Se nenhum valor for especificado para esta propriedade, ela tentará se conectar a um serviço de nomenclatura localizado na porta 2809 na máquina cliente local. Se não houver um servidor em execução na máquina cliente, não haverá nenhum serviço de nomenclatura atendendo nessa porta na máquina local. Isso faz com que o método createConnection falhe.

Solução
Um aplicativo cliente JMS pode especificar o valor de java.naming.provider.url programaticamente, usando um código da seguinte forma:
String key = "java.naming.provider.url";
String value = "iiop://some.remote.machine:9810";
System.setProperty(key, value);

Este código deve ser executado antes de chamar o método createConnection no objeto ConnectionFactory.

Como alternativa, se usar o script launchClient a partir da linha de comandos para iniciar o contêiner do cliente Java EE, você poderá especificar um dos dois parâmetros de linha de comandos seguintes:
  • launchClient <CLIENT EAR> -CCBootstrapHost=some.remote.machine -CCBootstrapPort=981
  • launchClient <CLIENT EAR> -CCproviderURL=iiop://some.remote.machine:9810

Isso assegura que se nenhuma URL do provedor for especificada programaticamente, qualquer objeto InitialContext será definido como padrão para utilizar a URL do provedor especificada na linha de comandos.


Ícone que indica o tipo de tópico Tópico de Referência



Í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=rjn_prob0
Nome do arquivo: rjn_prob0.html