2008-11-20 10 views
10

¿Cuál es la ruta de clases de un conjunto de contenedores Servlet?Contenedores de servlets y classpath

Según mi entender, hay tres componentes involucrados. Los archivos JAR en el directorio lib del contenedor Servlet y luego las clases en los archivos WEB-INF/classes y JAR en el directorio WEB-INF/lib. Las clases en el directorio lib del contenedor Servlet se agregan al classpath del sistema y el classpath dinámico incluye los archivos JAR en el directorio lib y las clases en el directorio classes.

¿A qué se ha establecido el classpath dinámico? ¿El classpath dinámico apunta a todos los directorios bajo WEB-INF o incluye todas las clases individuales y archivos JAR en WEB-INF/lib y WEB-INF/classes o simplemente apunta a los dos directorios WEB-INF/classes y WEB-INF/lib? Supongamos que tengo un directorio llamado foo en WEB-INF que contiene bar.properties. Ahora es bar.properties también en la ruta de clase?

Respuesta

7

La ruta de clase "dinámica" mostrará WEB-INF/classes, cada archivo JAR en WEB-INF/lib como entrada independiente. Otras carpetas bajo WEB-INF son no incluidas.

En su ejemplo, bar.properties no estará en el classpath. Muévalo al WEB-INF/classes, o póngalo dentro de un archivo JAR bajo WEB-INF/lib.

Lo que está en el resto de la ruta de clase depende de su contenedor Servlet. Es específico de la implementación, pero la mayoría de los contenedores tienen otros dos lugares para poner clases. Uno es un directorio que es visible para el contenedor, pero no para las aplicaciones, y el otro es visible para el contenedor y todas las aplicaciones. Como el segundo ClassLoader es visible para todas las aplicaciones, los miembros static de esas clases se pueden usar para compartir información entre aplicaciones.

+1

Si se incluyen otras carpetas en WEB-INF lib, ¿no debería el archivo de propiedades estar incluido en la ruta de clase? – Abhi

+0

Disculpa, fue un error importante, ¡me refería a "NO incluido"! – erickson

2

En su ejemplo, bar.properties debería estar en el directorio de clases para estar en el classpath.

Cuestiones relacionadas