2014-11-05 3 views
4

Я новичок в Джерси и сервлетов в целом так что надеюсь, я просто отсутствует что-то просто ...Обслуживание статических файлов с Джерси 2

У меня есть приложение Джерси (v2.13) и работает используя Guice (3.0) для инъекции зависимостей вместе с некоторыми статическими файлами в src/main/webapp. Если я привяжу свой сервлет-сержант к чему-либо другому, кроме/*, и сделаю запрос на статический файл в папке webapp, он не будет обслуживаться без проблем. Если я привяжу свой сервлет к корню, любой запрос на статический файл будет выполнен с помощью 404.

Я бы предпочел, чтобы сервлет-сержант был сопоставлен с корнем, но мне также нужно иметь возможность обслуживать статические содержание. Есть ли способ сделать это? Возможно, чтобы сопоставить сервлет Джерси с корнем, но игнорировать запросы для/assets/* или что-то подобное?

Вот моя web.xml:

<filter> 
    <filter-name>guice-filter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guice-filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<listener> 
    <listener-class>com.example.MyGuiceServletContextListener</listener-class> 
</listener> 

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.example.MyResourceConfig</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

ответ

4

Я указал на this вопрос и получил ответ. В основном мне просто нужно сменить сервлет Джерси на фильтр и поставить статическое содержимое regex в качестве параметра init. Теперь у меня есть сервлет, установленный в корне, и мои статические файлы получаются поданы так, как я хотел.

Смежные вопросы