2010-12-30 7 views
5

Próbuję zintegrować Spring 3.0.5 z Jersey 1.4. Wydaje mi się, że wszystko działa, ale za każdym razem, gdy próbuję i zwracam Widoczny, który wskazuje na stronę JSP, pojawia się błąd 404. Kiedy nie używał sprężynę mogę użyć tego filtru:Wiosna, Jersey i widoczna integracja JSP

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

I mógłbym powrócić widzialnego do dowolnego JSP, obrazów, CSS, które były przechowywane w odpowiednim folderze. Jednak teraz, gdy muszę korzystać z SpringServlet, aby uzyskać wiosenną integrację, nie mam pojęcia, jak uzyskać dostęp do zasobów, ponieważ nie mogę użyć powyższego filtru. Próbowałem używać tego mapowania serwletów bez powodzenia:

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

Czy ktoś zna odpowiednie konfiguracje, aby to osiągnąć?

Dzięki za pomoc.

Odpowiedz

4

odkryłem, że można użyć SpringServlet jako filtr:

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

Które naprawdę powinno być oczywiste dla mnie, ponieważ użyłem serwletu w moim oryginalnym filtrem!

+0

+1 Pomógł mi wiele z mojego pytania: http://stackoverflow.com/questions/8978200/can-not-connect-jax-rs-service-to-mvc-template – craig

1

Wydaje się podobne do default Servlet handler niedawno dodanego do Spring.

Podejrzewam, że zasób podglądany jest przetwarzany przez serwlet łańcuchowy zamiast serwletu obsługującego statyczną zawartość ("domyślny" serwlet omówiony w powyższym łączu).

Co stanie się, jeśli zmienisz konfigurację na <url-pattern>/</url-pattern>?