我需要轉發到REST服務的請求,並作出這樣的代碼:新澤西Servlet的:RequestDispatcher的返回404
private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
ServletContext portalContext = this.getServletContext();
ServletContext restService = portalContext.getContext("/restService");
RequestDispatcher dispatcher = restService.getRequestDispatcher("/resources/*");
dispatcher.forward(request, response);
}
服務「/ restService」還具有處理該請求的servlet和它的定義如下:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.service.RESTApplication</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.rest.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
類RESTApplication有這樣的代碼:
public RESTApplication() {
register(WadlFeature.class);
register(JacksonFeature.class);
register(MultiPartFeature.class);
property(CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true);
}
有Severa的將「com.rest.resources」中的l類映射到請求附帶的路徑(/ resources/*)。 但是,當請求被「getRequestDispatcher」轉發時,Jersey會拋出404錯誤。看來澤西島不能將我的請求映射到正確的servlet。如果我使用Postman粘貼相同的URL,則請求正常處理。該檢查調度的是:
爲了驗證是否問題是與新澤西,我已經創建了一個自HttpServlet延伸並不會提交到新澤西州一個Servlet:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.rest.resources.helloResource</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在此之後我執行該代碼:
private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
ServletContext portalContext = this.getServletContext();
ServletContext restService = portalContext.getContext("/restService");
RequestDispatcher dispatcher = restService.getRequestDispatcher("/hello");
dispatcher.forward(request, response);
}
Surprisely,此正向實現類helloResource其被放置成 「com.rest.resources」。
有沒有人遇到類似的東西? ?如何 「getRequestDispacther」 發現並轉發現有的 「/資源/」 servlet的*
版本中使用: 球衣2.6 的servlet 2.5 的JBoss 4.2.3-GA
所以'你好'工程和'資源'不?我想知道「資源」路徑是否已經被servlet使用了一些保留路徑? –
@JorgeCampos是的,與「你好」工作得很好。這對我來說似乎不是一個保留字的問題,但是在轉發請求時是Jersey問題 –