2012-06-26 15 views
5

Tengo un archivo jar en mi directorio WEB-INF/lib. Dentro de ese jar hay un directorio META-INF/resources con un archivo (image.jpg). Según tengo entendido la API servlet 3.0, cuando puedo implementar esto como parte de mi aplicación web en Tomcat 7, debería ser capaz de ir arecursos en META-INF/recursos no encontrados y return 404

http://host/context/image.jpg 

y ver la imagen cargada desde el interior del frasco. pero en cambio, obtengo un error 404. Es como si el servlet_api no estuviera cargando recursos desde dentro de mis jar a pesar de que la documentación dice que debería.

¿Qué estoy haciendo mal? ¿Hay algún campo que deba colocar en mi archivo web.xml para decirle a tomcat que cargue estos recursos y los ponga a disposición del navegador web?

+0

Solo para despejar cualquier confusión, estoy usando Struts2 con los plugins Convention/Rest, pero de acuerdo con la documentación de servlet 3.0, eso no debería importar, ¡y aún así no funciona en absoluto! Necesito algo de ayuda. –

Respuesta

5

La forma en que se construye el contenedor es correcta. Tomcat 7 se envía con el jar Servlet 3.0, pero no servirá los recursos del jar a menos que el web.xml especifique que es la versión 3.0. Tomcat no asumirá que desea la funcionalidad de Servlet 3.0.

En su web.xml, su etiqueta de web-app tiene que empezar así:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

Note las referencias a la versión 3.0

Tan pronto como se especifica la aplicación Web es versión 3.0, obtendrá acceso a la funcionalidad de Servlet 3.0.

Cuestiones relacionadas