Carregadores de classes localizam e carregam arquivos de classes. Para que um aplicativo implementado seja executado corretamente, os carregadores de classes que afetam o aplicativo e seus módulos devem ser configurados de forma que o aplicativo possa localizar os arquivos e recursos necessários. Diagnosticar problemas com carregadores de classes pode ser complicado e exigir muito tempo. Para diagnosticar e corrigir os problemas mais rapidamente, use o visualizador do
carregador de classes do console administrativo para examinar os carregadores de classes
e as classes carregadas para cada carregador de classes.
Antes de Iniciar
Esse tópico supõe que você instalou um aplicativo em um servidor
suportado pelo produto e deseja examinar os carregadores de classes utilizados pelo
aplicativo ou seus módulos. Os módulos podem ser módulos da Web (arquivos .war) ou módulos de enterprise bean (EJB) (arquivos .jar). O visualizador do
carregador de classes permite examinar os carregadores de classe em um ambiente no tempo de execução.
Este tópico também supõe que você tenha ativado o serviço de visualizador do carregador de classes.
Clique em ,
ative o serviço e reinicie o servidor.
Sobre Esta Tarefa
O ambiente do tempo de execução do WebSphere Application Server utiliza os seguintes carregadores de classes para localizar e carregar novas classes para um aplicativo na seguinte ordem:
- Os carregadores de classes de auto-inicialização, extensões e CLASSPATH criados pela Java Virtual Machine
- Um carregador de classes de extensões do WebSphere
- Um ou mais carregadores de classes do módulo aplicativo que carregam elementos dos aplicativos corporativos em execução no servidor
- Zero ou mias carregadores de classes do módulo da Web

Cada carregador de classes é um filho do carregador de classes anterior. Ou seja,
os carregadores de classes do módulo aplicativo são filhos do carregador de classes de extensões do WebSphere, que é filho do carregador de classes Java CLASSPATH. Sempre que uma classe precisa ser carregada, o carregador de classes, em geral, delega o pedido
a seu carregador de classes pai. Se nenhum dos carregadores de classes pai conseguirem localizar a classe, o carregador de classes original tentará carregar a classe. Os pedidos podem ir apenas para um carregador de classes pai; eles não podem ir para um carregador de classes filho. Após carregar uma classe por um carregador de classes, qualquer classe nova que ele tentar carregar reutiliza o mesmo carregador de classes ou sobe na lista de precedência até a classe ser localizada.
Se os carregadores de classes que carregam os artefatos de um aplicativo não
estiverem configurados corretamente, a JVM (Java Virtual Machine) poderá emitir uma
exceção de carregamento de classe ao iniciar ou executar esse aplicativo. O Exceções de Carregamento de Classe descreve os tipos de exceções causadas pela configuração
inadequada de carregadores de classes, e sugere formas de utilização do visualizador do
carregador de classes para corrigir as configurações dos carregadores de classes. Os tipos de exceções incluem:
Use o visualizador do carregador de classes para examinar os carregadores de classes
e corrigir problemas com configurações do aplicativo ou do carregador de classes.
Procedimento
- Examine uma visualização em árvore que lista todos os aplicativos instalados e seus módulos. Os módulos podem ser módulos da Web (arquivos .war) ou módulos EJB (arquivos .jar).
Clique em para acessar a Página Topologia de Aplicativos Corporativos.
- Examine a hierarquia de delegação do carregador de classes.
Na
página de topologia dos aplicativos corporativos, selecione um módulo para acessar
a página do visualizador do carregador de classes. A página lista os carregadores de classes visíveis para módulos da Web e EJB em um aplicativo corporativo instalado. Esta página o ajuda a determinar quais carregadores de classes carregaram arquivos de um módulo e a diagnosticar problemas com os carregadores de classes.
A hierarquia de delegação é determinada pelo modo de delegação de carregador de classes ou ordem do carregador de classes, especificada para um módulo do aplicativo ou da Web. O valor pode ser
Classes carregadas primeiro com carregador de classes pai ou Classes carregadas primeiro com o carregador de classes local (pai por último). Consulte a etapa Configurar Carregadores
de Classes para obter informações adicionais.
- Exporte as informações sobre carregadores de classes.
- Na Página Visualizador do Carregador de Classes, clique em Exportar.
- Opte por abrir um navegador ou editor nas informações do carregador de classes ou salvar as informações em disco em formato XML.
- Clique em OK e especifique quaisquer informações adicionais solicitadas pelo sistema.
- Exiba informações sobre carregadores de classes visíveis para o módulo em um formato de tabela HTML.
Na Página Visualizador do Carregador de Classes, clique em Visualização de Tabela. A página Visualização de Tabela exibe as seguintes informações:
Tabela 1. Página de Visualização da Tabela. Informações disponíveis nos atributos do
carregador de classes.Atributo do Carregador de Classes |
Description |
Delegação |
Indica se o carregador de classes delega o carregamento
do módulo para seu carregador de classes pai. O valor true implica
que o carregador de classes do aplicativo-pai está sendo utilizado (Classes carregadas
primeiro com o carregador de classes pai). O valor false implica
que o carregador de classes do módulo está sendo utilizado (Classes carregadas primeiro com carregador de classes local (pai por último)). Consulte a etapa Configurar Carregadores
de Classes para obter informações adicionais. |
Caminho de Classe |
Lista os caminhos pelos quais o carregador de classes procura as classes e os recursos. |
Classes |
Lista os nomes de classes carregados na JVM por esse
carregador de classes. |
A opção Visualização de Tabela não retorna um
valor quando forem gerados erros de falta de memória. Os erros de falta de memória podem estar relacionados a uma fuga de memória. Para examinar as informações sobre carregadores de classes em uma tabela,
resolva o problema de falta de memória e, em seguida, clique em Visualização
de Tabela novamente.
- Procure os carregadores de classes.
Na página Visualizador do
Carregador de Classes, clique em
Procurar para acessar a
Página
Procurar, na qual você pode procurar carregadores de classes para os seguintes itens:
- Cadeias específicas
- Arquivos .jar específicos
- Os nomes dos arquivos em um diretório específico
- Os nomes dos arquivos carregados por um carregador de classes específico
A procura faz distinção entre maiúsculas e minúsculas.
Exceções de Carregamento de Classe
descreve os diversos usos da página Procurar.
- Configure os carregadores de classes. É possível configurar os carregadores de classes para o seguinte:
A configuração do carregador de classes determina que carregador de classes carrega as classes e os arquivos de recursos para um aplicativo ou módulo da Web. As definições de configuração do aplicativo e do carregador de classes do módulo WAR incluem Ordem do
carregador de classes e Política do carregador de classes do WAR.
Um valor de Ordem do carregador de classes pode ser
Classes carregadas primeiro com o carregador de classes pai ou Classes carregadas primeiro com o carregador de classes local (pai por último). O padrão é Classes carregadas primeiro com o carregador de classes pai.
Um carregador de classes com o modo Classes carregadas primeiro com o carregador de classes pai delega o carregamento de uma classe ou recurso para seu carregador de classes pai imediato antes de procurar um caminho de classe.
Ao solucionar problemas de carregamento de classes, pode ser necessário substituir classes visíveis em um carregador de classes pai. Para substituir essas classes pelas classes específicas a um
aplicativo, configure a Ordem do carregador de classes como Classes carregadas primeiro com o carregador de classes local (pai por último) no carregador de classes
que contenha as classes de aplicativo em seu caminho de classe. Um aplicativo pode substituir classes visíveis em um carregador de classes pai, mas fazer isso pode resultar em uma ClassCastException ou UnsatisfiedLinkError se houver um uso misto de classes substituídas e classe não-substituídas.
Por exemplo, nas políticas do carregador de classes padrão, um módulo da Web possui seu próprio carregado de classe do módulo da Web (WAR) para carregar seus artefatos, que estão tipicamente nos diretórios WEB-INF/classes e WEB-INF/lib.
Um carregador de classes do módulo aplicativo é o pai imediato desse carregador de classes do WAR. Para assegurar que o carregador de classes do módulo da Web procure nesses caminhos por uma classe em particular ou recurso primeiro, antes de delegar a operação de carregamento para o carregador de classes do módulo aplicativo, configure a Ordem do carregador de classes do módulo da Web como Classes carregadas com carregador de classes local primeiro (pai por último).
As políticas do carregador de classes determinam a estrutura do aplicativo e os carregadores do módulo WAR. Em políticas padrão, cada EAR de aplicativo em execução possui seu próprio carregador de classes do módulo aplicativo e cada módulo da Web possui seu próprio carregador de classes do módulo WAR. As políticas padrão garantem a conformidade do Java EE em relação à visibilidade
e isolamento entre os artefatos do
aplicativo. Não é sugerido alterar as políticas padrão durante a resolução de problemas de carregamento de classes.
O que Fazer Depois
Se você continuar a ter problemas de carregador de classes, consulte Exceções de Carregamento de Classe e Carregamento de Classe.