2010-08-23 17 views
6

por qué tomcat tiene su propio cargador de clases. ¿cuál es la ventaja de tener un classloader definido por el usuariopor qué necesitamos el cargador de clases definido por el usuario en java

+0

Como otra respuesta podría mencionar que estoy bastante seguro de que si sobrescribe el cargador de clases puede hacer algunas cosas de meta bastante impresionantes con su código. Puede permitirle implementar sus propios esquemas de cifrado y debe poder hacer algunos trucos de estilo aspect-j (por ejemplo, tener cada llamada a "Log" etiquetada con el nombre del número de clase/línea del que está registrando). No lo hice. hacer esto una "Respuesta" porque no he hecho esto pero creo que es posible. –

Respuesta

12

Aísla las diversas aplicaciones de Internet desplegadas en el contenedor; es decir, el comportamiento de una aplicación weba no se verá afectado por (des) implementación de otra aplicación weba.

Cada aplicación web solo ve sus propias clases, no las que proporcionan otras aplicaciones. Esto permite que diferentes webapps usen diferentes versiones de la misma clase. Desplegar varias aplicaciones de Internet sería una pesadilla sin ese aislamiento.

De manera similar, los paquetes OSGI obtienen sus propios cargadores de clases para que diferentes paquetes puedan usar diferentes versiones del mismo complemento. Una vez más, este aislamiento hace que sea menos probable que agregar un complemento (con sus bibliotecas dependientes) afecte a los otros complementos del sistema.

8

Tomcat (y otros contenedores de aplicaciones) deben ser capaces de manejar clases de carga desde archivos WAR etc. ¿Cómo podría hacer eso sin usar cargadores de clase definidos por el usuario?

EDITAR: Básicamente necesita cargadores de clases definidos por el usuario si necesita cargar clases o recursos de maneras "inusuales" ... como por ejemplo de un archivo EAR o WAR. Como otro ejemplo, puede cargar clases desde una base de datos, o desde algún almacenamiento seguro.

+2

skeet por qué no pueden usar el cargador de clases o el cargador de clase del sistema –

+1

@Suresh S: ¿Alguno de ellos sabe cómo procesar un archivo WAR o EAR? ? –

+0

skeet gracias por la respuesta breif al cargar desde la base de datos. –

3

Trabajé en un sistema una vez que tenía un cargador de clases que cargaba clases desde una base de datos distribuida. De esta forma, podría modificar su código, compilarlo y hacer que el compilador lo volcara en el DB; luego, cualquiera que reiniciara su sistema lo cargaría inmediatamente (esto era para clientes en un sistema cliente/servidor distribuido donde los administradores podían crear su propia pantalla módulos sobre la marcha y enviarlos a los clientes).

Esto tenía problemas por cierto, gran teoría, pero no puedo recomendarlo.

Cuestiones relacionadas