Весна, Джерси и видимая интеграция JSP - PullRequest
5 голосов
/ 30 декабря 2010

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

<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>

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

<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>

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

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

Ответы [ 2 ]

4 голосов
/ 01 января 2011

Я обнаружил, что вы можете использовать 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>

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

1 голос
/ 30 декабря 2010

Это похоже на обработчик сервлета по умолчанию , недавно добавленный в Spring.

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

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

...