2016-09-21 2 views
1

При попытке получить доступ к /Example/Site 404 не найдено ни одной страницы, но jsp находится в webapp/WEB-INF/jsp/. Почему это не работает?Просмотренный маршрут возвращается 404

<web-app id="WebApp_ID" version="2.4" 
     xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>jmattheis rest app</display-name> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:applicationContext.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 


    <servlet> 
     <servlet-name>jersey-servlet</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.stackoverflow.jmattheis.rest</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.servlet.filter.forwardOn404</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.provider.classnames</param-name> 
      <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name> 
      <param-value>/WEB-INF/jsp</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.tracing</param-name> 
      <param-value>ALL</param-value> 
     </init-param> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jersey-servlet</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

Здесь ресурс:

@Component 
@Path("Example") 
public class Example { 
    @GET 
    @Path("/Site") 
    @Produces(MediaType.TEXT_HTML) 
    public Response getSite() { 
     return Response.ok(new Viewable("/test")).build(); 
    } 
} 

ответ

0

Have a look at the Jersey2 MVC documentation

Джерси веб-приложения, которые хотят использовать поддержку шаблонного JSP должна быть зарегистрирована как Servlet фильтров, а не сервлеты в web.xml приложения , Стиль развертывания web.xml-less, представленный в Servlet 3.0, в настоящее время не поддерживается для веб-приложений, для которых требуется поддержка шаблонов Jersey MVC.

Поэтому вам нужно сменить сервлет на фильтр, чтобы он работал.

Возможно, это не было необходимо в ранних версиях джерси 2, но я не могу найти более раннюю документацию, поэтому мы никогда не узнаем.

Как это:

<web-app id="WebApp_ID" version="2.4" 
     xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>jmattheis rest app</display-name> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:applicationContext.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 


    <filter> 
     <filter-name>jersey-filter</filter-name> 
     <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.stackoverflow.jmattheis.rest</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.servlet.filter.forwardOn404</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.provider.classnames</param-name> 
      <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name> 
      <param-value>/WEB-INF/jsp</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.tracing</param-name> 
      <param-value>ALL</param-value> 
     </init-param> 
    </filter> 

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

</web-app> 
Смежные вопросы