A lista de verificação de EJBs apresenta várias
perguntas ou tarefas que você pode examinar para ajudar a determinar
ou eliminar possíveis problemas que impedem um trabalho
bem-sucedido neste produto.
Alguns itens na lista de verificação são simplesmente perguntas que você
deve fazer a si mesmo durante o processo de resolução de problemas e outros
são dicas ou links para informações úteis.
Vá para uma seção abaixo que descreva melhor o que você estava
tentando executar:
Observe seu espaço de trabalho e conte quantos EARs existem. Quantos
aplicativos corporativos você possui?
Como você mapeou seus módulos de Aplicativo Corporativo (projeto
de Cliente Aplicativo J2EE, projeto EJB ou projeto da Web) para o(s)
projeto(s) de Aplicativo Corporativo (projeto EAR)?
Verifique se você possui um
problema de caminho de classe
Você está utilizando projetos de utilitário java ou arquivos JAR estáticos? Se estiver
utilizando arquivos JAR estáticos, onde os colocou?
Coloque os arquivos JAR estáticos no WEB-INF/lib se você estiver
utilizando-os apenas em um aplicativo da Web
ou coloque-os no Aplicativo Corporativo (EAR) se desejar compartilhá-los
entre vários módulos de Aplicativo Corporativo (projetos
de Cliente Aplicativo, EJB ou WEB) ou se eles estiverem sendo utilizados
apenas por seu aplicativo EJB.
Todos os JARs de Utilitário de Projeto foram mapeados para o módulo de Aplicativo Corporativo em que eles serão utilizados?
Assegure-se de que você tenha incluído seu Projeto Java no formulário JARs de
Utilitário de Projeto na página Módulo do descritor de implementação de
Aplicativo Corporativo.
Você está obtendo um rastreio de pilha java.lang.NoClassDefFoundError no
tempo de execução que trata de classes contidas no projeto de Utilitário Java
ou arquivo JAR estático?
Verifique suas Dependências JAR do Java para seu módulo de Aplicativo Corporativo
e assegure-se de que todos os arquivos JAR requeridos estejam marcados nessa
página (clique com o botão direito do mouse no Projeto > Propriedades > Dependências
JAR do Java).
Existem dois caminhos de classe diferentes com os quais você precisa
preocupar-se durante o desenvolvimento e teste de um Aplicativo Corporativo.
O Caminho de Construção Java é o caminho de classe utilizado pelo compilador
para localizar classes dependentes apenas para fins de compilação. As
Dependências JAR do Java (um front-end para o arquivo MANIFEST.MF) são utilizadas pelo
tempo de execução para localizar classes dependentes que estão localizadas em seu
Aplicativo Corporativo ou em outros módulos de Aplicativo Corporativo contidos
em seu Aplicativo Corporativo. Por isso, em seu espaço de trabalho, o aplicativo
pode ser compilado apropriadamente e você pode supor que ele esteja funcionando, mas
é necessário assegurar-se de que os mesmos JARs estejam visíveis no tempo de
execução, incluindo-os na página Dependências JAR do Java para evitar que
ocorram erros java.lang.NoClassDefFoundError.
Sempre selecione os arquivos JAR primeiro nas Dependências JAR do Java, uma vez que os arquivos JAR serão incluídos automaticamente no Caminho de Construção Java.
Verifique se o problema é
uma limitação com as especificações
Este é um bean de sessão sem
preservação de estado ou com preservação de estado?
O seu bean de sessão está
utilizando transações gerenciadas por contêiner ou gerenciadas por beans?
Tudo o que requer referências
de recurso está definido corretamente?
Para qual banco de dados você está tentando mapear seus EJBs?
Alguns códigos de implementação EJB dependem diretamente do tipo de fornecedor de Banco de Dados e do Sistema Operacional escolhido.
Por exemplo, se você escolher DB2 no Windows e gerar o código de
implementação EJB, é possível que ele falhe se o destino de tempo de
execução pretendido for DB2 no z/OS.
Certifique-se de que o banco de dados de backend definido para o EJB seja
o banco dados de tempo de execução e o Sistema operacional pretendidos, para que
quando você gerar o código implementação EJB, ele seja correto para essa plataforma.
A situação ideal é ter os bancos de dados de desenvolvimento e de
produção na mesma plataforma; entretanto, como isso pode não ser realístico,
você pode criar vários backends e alternar entre eles no descritor de
Implementação EJB. Assegure-se de que depois de alterar o backend no
descritor de Implementação EJB, você gere o código de implementação EJB novamente.
Verifique se os arquivos de metadados do banco de dados não estão danificados
Examine sua pasta de backend de módulos EJB em seu espaço de trabalho.
Todas as tabelas listadas no arquivo de definições do banco de dados e do esquema podem ser abertas utilizando seus editores correspondentes?
Se a resposta for sim, seus arquivos de metadados estão
ok
Se a resposta for não, tente importar novamente as informações do banco de
dados, utilizando o assistente de Mapeamento EJB para RDB (clique com o botão direito do mouse em seu
Projeto EJB > Mapeamento EJB para RDB > Gerar Mapa) e utilize as novas informações de backend.
Verifique se você mapeou corretamente o EJB para o banco de dados: (Para
estimular sua memória, a seguir estão perguntas que requerem respostas "sim" ou "não")
Todos os atributos ejb e as tabelas correspondentes estão mapeados?
Considerando os relacionamentos reais entre as tabelas,
os relacionamentos ejb definidos estão corretos?
Os CMRs estão mapeados corretamente para as restrições de Chave Estrangeira?
Os Tópicos/Filas e seus connection factories estão corretamente configurados?
As portas listener estão definidas?
Os nomes JNDI estão especificados corretamente?
O ID de segurança JAAS está especificado corretamente e é utilizado se
requerido por um connection factory?
As exceções
de Apl EJB não são emitidas pelos MDBs porque eles não possuem nenhum
cliente para interceptá-las
Os EJBs BMP
são um modelo de programação avançado. Os melhores recursos para depurar seu
código ou saber como gravar BMPs são os manuais sobre o tópico. Para obter os links para os manuais, consulte as informações úteis de como fazer no início deste tópico.
O nome JNDI da origem de dados está associado corretamente aos projetos ejb
ou ejbs cmp individuais?
O ID de backend especificado está correto na seção Ligações do WebSphere do Descritor de Implementação EJB?
Um projeto EJB pode ter vários backends e cada um deles precisa ter seu código de implementação EJB gerado
Os atributos transacionais e as intenções de acesso estão especificados
no descritor de Implementação EJB e foram entendidos?
A
melhor fonte para essas informações está no centro de informações do
WebSphere Application Server. Veja isso listado no site Information Centers and Libraries
O código gerado funciona corretamente?
Você tentou depurar ou avançar passo a passo pelo código gerado para
identificar o código ou as consultas inválidas que estão sendo utilizadas? Esta é uma
tarefa difícil e depende de seu nível de habilidade.
Ao
resolver problemas de ejbdeploy, passe primeiro pelas ferramentas antes
de depurar o código gerado.
A melhor fonte para as informações relacionadas ao servidor está no centro de informações do WebSphere Application Server. Veja isso listado no
site Information Centers and Libraries.
As perguntas que você poderá fazer a si mesmo são:
Qual versão do servidor é indicada em seu console?
Este é um problema de configuração da origem de dados?
O servidor é iniciado completamente?
Este é um Problema de Tempo de Execução do Servidor?
A melhor fonte para as informações relacionadas ao servidor está no centro de informações do WebSphere Application Server. Veja isso listado no
site Information Centers and Libraries.
As perguntas que você poderá fazer a si mesmo são:
Verifique as dicas de Resolução de Problemas do WebSphere
Este é um problema de carregamento de classe?
Este é um problema de configuração de DataSource?
O servidor é iniciado completamente?
Você recebe uma mensagem "Defeito ao fazer upload do archive para o servidor" quando está tentando publicar um aplicativo em um servidor de aplicativos remoto do WebSphere?
Essa mensagem poderá aparecer se a máquina que estiver executando o Rational Developer não puder executar ping do endereço IP ou nome do host contido no serverindex.xml do servidor remoto.
Para resolver esse problema, na máquina servidor, modifique o nome do host definido no arquivo <HOME_DO_WAS>\profiles\<PROFILENAME>\config\cells\<CELLNAME>\nodes\<NODENAME>\serverindex.xml e altere o nome do host para um que a máquina que estiver executando o Rational Developer possa resolver
Antes de Entrar em Contato com o Suporte sobre seus EJBs