2011-01-19 14 views
15

Me gustaría empaquetar mis clases web Java EE6 (beans, filtros, servlets) en el jar y colocarlo en el directorio /WEB-INF/lib/ junto con otros jar de utilidad y abandonar el directorio /WEB-INF/classes/ totalmente./WEB-INF/classes vs/WEB-INF/lib

¿Hay alguna diferencia sustancial entre los dos en términos de carga de clases, contexto de aplicación de acceso, etc.?

Gracias.

PD: Cuando busco en Google cualquiera de las especificaciones de Java, siempre me redireccionan al índice de la documentación de Oracle, que está a una docena de clics de la URL original. ¿Alguien sabe lo que está pasando allí?

Respuesta

19

I'd go for /WEB-INF/classes. Le permite ejecutar su aplicación en modo de depuración y clases de intercambio en caliente en el momento del cambio. Si empaqueta todo como un contenedor, tendrá que volver a empaquetar y volver a implementar la aplicación cada vez que cambie una clase.

+0

gracias. Pero, aparte de la depuración, ¿será funcionalmente la misma aplicación? – Osw

+1

sí. No hay diferencia – Bozho

14

Bueno, en breve: Imagine que tiene clase org.example.Test.class, si lo pones en el tarro y en WEB-INF/lib/ directorio y copiar la misma clase en WEB-INF/classes/ continuación, cargador de clases de esa aplicación utilizará último (de WEB-INF/classes/).

A veces se puede usar como ventaja - Tengo una biblioteca, y tiene un error ... Busco la fuente de esa clase (donde está el error; extraño la parte de cómo sé que el error está en eso clase, esa es otra historia), agrego esa clase al proyecto con código fijo, y se compila en WEB-INF/classes/ mientras la biblioteca todavía existe en WEB-INF/lib/. La clase fija se usará hasta que se resuelva la biblioteca.

+0

Gracias, esta característica puede ser útil. – Osw

+0

Consejo útil, gracias! – aglassman

0

En la descripción del contenedor de Tomcat Servlet: WEB-INF\classes se busca antes de WEB-INF\lib. Puede elegir delegar su carga de clases en su cargador de clases personalizado, incluso si se mantiene el orden anterior.

Si elige ir con un proveedor diferente, p. JBOss, Glassfish, Jetty podría tener un orden diferente, pero no estoy seguro de eso.