2010-12-30 3 views
5

Я пытаюсь интегрировать Spring 3.0.5 с Jersey 1.4. Кажется, у меня все работает, но всякий раз, когда я пытаюсь вернуть Viewable, указывающий на JSP, я получаю ошибку 404. Когда я не использую весной я мог бы использовать этот фильтр:Spring, Jersey и Viewable JSP Integration

<filter> 
    <filter-name>Jersey Filter</filter-name> 
    <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.Redirect</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>cheetah.frontend.controllers</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> 
     <param-value>/(images|css|jsp)/.*</param-value> 
    </init-param> 
</filter> 

И я мог бы возвращать Видимый на любой JSP-, изображения, CSS, которые были сохранены в соответствующей папке. Однако теперь, когда мне приходится использовать SpringServlet для интеграции с пружиной, я не понимаю, как получить доступ к ресурсам, так как я не могу использовать фильтр выше. Я попытался с помощью этого сервлету не повезло:

<servlet> 
    <servlet-name>jerseyspring</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> 
     <param-value>/(images|css|jsp)/.*</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>jerseyspring</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Кто-нибудь знает правильные конфигурации для достижения этой цели?

Спасибо за любую помощь.

ответ

4

я обнаружил, что вы можете использовать SpringServlet в качестве фильтра:

<filter> 
    <filter-name>Jersey Filter</filter-name> 
    <filter-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.Redirect</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> 
     <param-value>/(images|css|jsp)/.*</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>Jersey Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Что действительно должно было быть очевидным для меня, так как я использовал Servlet в моем оригинальном фильтре!

+0

+1 Помогло мне с моим вопросом: http://stackoverflow.com/questions/8978200/can-not-connect-jax-rs-service-to-mvc-template – craig

1

Это похоже на default Servlet handler, недавно добавленный в Spring.

Я подозреваю, что ваш видимый ресурс обрабатывается сервлетом jerseyspring, а не статичным сервлет-обработкой содержимого («Сервлет по умолчанию», обсуждаемый в приведенной выше ссылке).

Что произойдет, если вы измените конфигурацию на использование <url-pattern>/</url-pattern>?