2011-09-20 9 views
5

Estoy buscando un escenario simple cuando puede ser necesario crear un cargador de clases personalizado?¿Escenario cuando uno puede requerir un cargador de clases personalizado?

Aparte de eso, solo quería confirmar que ¿Incluso el cargador de clases de aplicación y de arranque extiende java.lang.ClassLoader internamente?

+0

Bueno, un servidor de aplicaciones Java como tomcat podría requerir un cargador de clases personalizado, para cosas tales como dar a cada aplicación su propia "instantánea" de las clases cargadas. –

Respuesta

9

En resumen, se puede utilizar para agregar un nuevo código o cambiar el código existente sobre la marcha. Aquí hay una explicación más detallada de este URL.

¿Por qué escribir un cargador de clases personalizado?

Las tres razones principales por las que desea crear un cargador de clases personalizadas son:

  • Para permitir la carga de clases de repositorios alternativos.

    Este es el caso más común, en el que un desarrollador de aplicaciones podría querer cargar clases desde otras ubicaciones, por ejemplo, a través de una conexión de red.

  • Para particionar el código de usuario.

    Este caso es utilizado con menos frecuencia por los desarrolladores de aplicaciones, pero es ampliamente utilizado en motores servlet.

  • Para permitir la descarga de clases.

    Este caso es útil si la aplicación crea un gran número de clases que se usan solo por un período finito. Debido a que un cargador de clases mantiene un caché de las clases que ha cargado, estas clases no se pueden descargar hasta que el cargador de clases haya sido desreferenciado. Por esta razón, las clases de sistema y extensión nunca se descargan, pero las clases de aplicación se pueden descargar cuando su cargador de clases está.

+0

Gracias RHT. Como dijiste "las clases de aplicación se pueden descargar cuando su cargador de clases es". ¿El cargador de clases de aplicaciones se descarga en cualquier momento en la aplicación/servidor web? Según mi entendimiento, se descargarán también cuando apaguemos la aplicación/servidor web. ¿Verdad? ¿No está seguro de qué significan las clases de extensión? –

+0

Hola Sach. Antes que nada, me disculpo por la respuesta tardía. Regresé a StackOverflow hoy, buscando mi propia respuesta a esta pregunta y noté su comentario. – RHT

+0

Su pregunta: ¿qué son las clases de sistema/extensión merece ser una pregunta separada de alto nivel en StackOverflow y merece una respuesta detallada, pero en resumen? Application Server sí mismo una aplicación java que se encuentra encima de una JVM por lo tanto tiene su propia clases del sistema que necesita usar o bibliotecas que puede compartir en diferentes aplicaciones. La terminología varía de un proveedor a otro, pero dichas clases no se descargan con la aplicación. – RHT

Cuestiones relacionadas