Los cargadores de clases buscan y cargan archivos de clase. Para
que una aplicación desplegada se ejecute correctamente, los cargadores de
clases que afectan a la aplicación y sus módulos deben configurarse de
modo que la aplicación pueda encontrar los archivos y recursos que
necesita. El diagnóstico de problemas con los cargadores de clases puede
ser complicado y llevar mucho tiempo. Para diagnosticar y solucionar los problemas
con mayor rapidez, utilice el visor de cargadores de clases de la consola administrativa para examinar los cargadores de clases y las clases cargadas por
todos los cargadores de clases.
Antes de empezar
En este tema se da por supuesto que ha instalado una aplicación en un
servidor soportado por el producto y que desea examinar los cargadores de clases
utilizados por la aplicación o sus módulos. Los módulos pueden ser
módulos web (archivos .war) o módulos EJB de
enterprise bean (archivos .jar). El visor de
cargadores de clases le permite examinar los cargadores de clases en un
entorno de ejecución.
En este tema también se supone que ha
habilitado el servicio Visor de cargadores de clases. Pulse , habilite el servicio y reinicie el servidor.
Acerca de esta tarea
El entorno de ejecución de
WebSphere Application Server utiliza los siguientes
cargadores de clases para buscar y cargar nuevas clases para una aplicación, en el orden siguiente:
- Los cargadores de rutina de carga, extensiones y CLASSPATH creados por la
máquina virtual Java.
- Un cargador de clases de extensiones de WebSphere
- Uno o más cargadores de clases de módulos de aplicaciones que carga
elementos de las aplicaciones empresariales que se ejecutan en el servidor.
- Cero o más cargadores de clases del módulo web

Cada cargador de clases es hijo del cargador de clases anterior. Esto es, los cargadores de clases de módulos de aplicaciones son hijos del
cargador de clases de extensiones de WebSphere, que es hijo del
cargador de clases Java de CLASSPATH. Siempre que tenga que cargar una clase, el cargador de clases delegará casi siempre la
solicitud al cargador de clases padre. Si ninguno de los cargadores de clase padre puede
encontrar la clase, el cargador de clases original intentará cargarla. Las solicitudes sólo
pueden ir al cargador de clases padre, no pueden ir al cargador de clases hijo.
Una vez cargada
la clase por el cargador de clases, las nuevas clases que intente cargar
reutilizarán el mismo cargador de clases, o subirán en la lista de prioridad hasta
que se encuentre la clase.
Si los cargadores de clases que cargan los artefactos de
una aplicación no están configurados correctamente, la JVM (Java virtual machine) generará una excepción de carga de clase cuando inicie o ejecute esa aplicación. En Excepciones de carga de clases se describen los tipos
de excepciones generadas por cargadores de clases que no se han
configurado correctamente y se sugieren modos para utilizar el visor de
cargadores de clases para corregir las configuraciones de cargadores de
clases. Los tipos de excepciones son:
Utilice el visor de cargador de clases para examinar los cargadores y corregir los problemas con las configuraciones de los cargadores de clases o aplicaciones.
Procedimiento
- Examine una vista de árbol que enumere todas las aplicaciones
instaladas y sus módulos en una vista de árbol. Los módulos pueden
ser módulos web (archivos .war) o módulos EJB
(archivos .jar).
Pulse para acceder a la página Topología de aplicaciones de empresa.
- Examine la jerarquía de delegación de cargadores de clases.
En la página Topología de aplicaciones de empresa, seleccione un módulo para acceder
a la página del Visor de cargadores de clases. En esta página se
enumeran los cargadores de clases visibles para los módulos web y EJB
en una aplicación de empresa instalada. Esta
página le permite determinar qué cargadores de clases han cargado archivos
de un módulo y diagnosticar los problemas de los cargadores de clases.
La jerarquía de delegación viene determinada por el módulo de delegación del cargador de clases o por el orden del cargador de clases, especificado para una aplicación o módulo web. El valor puede ser
Clases cargadas con cargador de clases padre primero o Clases cargadas con el cargador de clases primero (padre último). Consulte el paso
Configure los cargadores
de clases para obtener más información.
- Exporte la información a los cargadores de clases.
- En la
página del Visor de
cargadores de clases, pulse Exportar.
- Opte por abrir un navegador o un editor con la información
de cargador de clases o guardar la información en disco en formato XML.
- Pulse Aceptar y especifique cualquier información
solicitada por el sistema.
- Muestra información sobre los cargadores de clases
visibles para el módulo en un formato de tabla HTML.
En la
página del Visor de
cargadores de clases, pulse Vista de la tabla. La página Vista de la tabla muestra la información siguiente:
Tabla 1. Página Vista de la tabla. Información disponible sobre los atributos del cargador de clases.Atributo de cargador de clases |
Descripción |
Delegación |
Indica si el cargador de clases delega la carga del
módulo en el cargador de clases padre. Un valor true implica que se está utilizando el cargador de clases de la aplicación padre Clases cargadas con cargador de clases padre primero). Un valor false implica que se está utilizando el cargador de clases de módulos (Clases cargadas con el cargador de clases primero (padre último)). Consulte el paso
Configure los cargadores
de clases para obtener más información. |
Classpath |
Enumera las vías de acceso en las que el cargador de clases
busca las clases y los recursos. |
Clases |
Enumera los nombres de clases cargadas en la JVM por
este cargador de clases. |
La opción Vista de la tabla no devuelve un valor cuando se generan errores de falta de memoria. Los errores de falta de memoria pueden estar
relacionados con una pérdida de memoria. Para examinar la información sobre los
cargadores de clases en una tabla, resuelva el problema de falta de memoria y, a
continuación, vuelva a pulsar Vista de la tabla.
- Busque los cargadores de clases.
En la página
Visor de cargadores de clases, pulse
Buscar para acceder a la
página
Buscar, donde
puede buscar cargadores de clases para los siguientes elementos:
- Series específicas
- Archivos .jar específicos
- Nombres de archivos de un directorio específico
- Nombres de archivos cargados por un cargador de clases específico
La búsqueda es sensible a las mayúsculas y minúsculas. En
Excepciones de carga de clases se describen varios usos de la página Buscar.
- Configure los cargadores de clases. Puede
configurar los cargadores de clases para los siguientes elementos:
La configuración de los cargadores de clases determina qué
cargador de clases carga las clases y los archivos de recursos de una
aplicación o módulo web. Los valores de configuración de cargador de clases de módulo WAR y
aplicación incluyen la Orden de cargadores de clases y la
Política de cargador de clases WAR.
Un valor Orden de cargadores de clases puede ser Clases cargadas con cargador de clases padre primero o Clases cargadas con el cargador de clases primero (padre último). El valor predeterminado es Clases cargadas con cargador de clases padre primero. Un cargador de clases con la modalidad Clases cargadas
con cargador de clases padre primero delega la carga de una clase o un recurso a su
cargador de clases padre inmediato antes de buscar en la vía de acceso de clases.
Cuando se resuelven problemas de carga de clases, a veces se
deben alterar temporalmente las clases visibles para un cargador de clases padre. Para alterar temporalmente esas clases con aquellas que son específicas de una aplicación, establezca el Orden de cargadores de clases en Clases cargadas con el cargador de clases primero (padre último) en el cargador de clases que contiene las clases
de aplicación en la vía de acceso de clases. Una aplicación puede
sobrescribir las clases visibles para un cargador de clases padre, pero al hacerlo
puede generar una excepción ClassCastException o un error UnsatisfiedLinkError si se
utilizan indistintamente clases sobrescritas y clase no sobrescritas.
Por ejemplo, en las políticas
de cargador de clases predeterminadas, un módulo web tiene su propio cargador de clases
WAR de módulo web para cargar sus artefactos, que se encuentran normalmente en los
directorios WEB-INF/classes y WEB-INF/lib.
Un cargador de clases
de módulo de aplicaciones es el padre inmediato de este cargador de clases WAR. Para garantizar que el cargador de clases de módulos web busca
primero en estas vías de acceso una determinada clase o recurso,
antes de delegar la operación de carga al cargador de clases de
módulos de aplicación, establezca el Orden de cargadores
de clases del módulo web en Clases cargadas
con el cargador de clases primero (padre último).
Las políticas de cargador de clases determinan la estructura de la aplicación y los
cargadores de clases de módulo WAR. Con las políticas predeterminadas, todo archivo EAR
de aplicación en ejecución tiene su propio cargador de clases de módulo de
aplicación, y todo módulo web tiene su propio cargador de clases de módulo WAR. Las
políticas predeterminadas garantizan el cumplimiento de Java EE en cuanto a visibilidad y
aislamiento entre artefactos de la aplicación. No se recomienda cambiar las
políticas predeterminadas cuando se solucionan problemas de carga de clases.
Qué hacer a continuación
Si continúa teniendo problemas con el cargador de clases, consulte Excepciones de carga de clases y Carga de clase.