2012-03-17 28 views
0

是否有可能通過請求分派器向另一個項目中的servlet發送http回發請求。我試過,但RequestDispatcher將請求傳輸到同一服務器上的另一個Web應用程序

給定的URL在同一個項目檢查,並給出了404錯誤......

HTTP Status 404 - /FilterI/http:/IP:8080/FilterII/RequestServlet 

type Status report 

message /FilterI/http:/IP:8080/FilterII/RequestServlet 

description The requested resource (/FilterI/http:/10.49.11.197:8080/FilterII/RequestServlet) is not available. 

無論是戰爭部署在同一server.I可以通過使用.sendRedirect達到同樣的事情( )函數..但是爲什麼它不是在requestdispatcher的幫助下運行的。

回答

0

The javadoc說:

指定可以是相對的路徑名,雖然它不能在當前servlet上下文外側延伸 。

(重點煤礦)

所以,你要問是不可能的。

+0

Thanks.I想通了它不可能... – AngelsandDemons 2012-03-26 14:04:18

1

是的,使用ServletContext API。您可以使用ServletContext.getContext("othercontext")獲取其他應用程序的servlet上下文,並獲取該應用程序中servlet的請求分派器。

下面是解釋如何做到這一點的代碼:

ServletContext otherCtx = currentServletContext.getContext("otherContext"); 
RequestDispatcher dispatcher = otherCtx.getRequestDispatcher("/forwardedPath"); 
dispatcher.forward(request, response); 
+0

你忘了提一個並非不重要的事實,以及如何配置吧:獲取其他Web應用程序上下文的能力默認爲*禁用*,如果不是全部自尊的容器,則默認爲禁用*。 – BalusC 2012-03-18 00:32:27

+0

在tomcat中,例如需要將crossContext =「true」放入context.xml中。 http://stackoverflow.com/a/6555794/21499 – 2013-10-18 10:41:35

相關問題