【发布时间】:2013-12-21 02:36:21
【问题描述】:
在我的一个 servlet 中,我调用 RequestDispatcher.forward() 调用 WEB-INF 文件夹下某处的静态资源:
request
.getRequestDispatcher( "/WEB-INF/some/path/image.gif" )
.forward( request, response );
导航到这个 servlet 在 Tomcat、Jetty 等下工作正常,但在 WebSphere 7 中不工作。 我得到的错误(在浏览器和服务器日志中)是
Error 403: SRVE0190E: File not found: /WEB-INF/some/path/image.gif
最初我认为 WebSphere 可能需要一些特定的配置来允许内部转发到 WEB-INF 下的资源,但我没能在 google 上找到任何有用的东西。
任何想法为什么会发生这种情况?
提前致谢!
【问题讨论】:
-
检查您的部署。那个文件真的存在吗?
-
@SotiriosDelimanolis 是的。相同的 WAR 在其他服务器下工作...
-
可以转发到 WEB-INF 内的资源。我认为这是 Java EE 的规范,因为它是内部调用。 403 表示资源存在但被禁止,不可访问。 WebSphere 出了点问题。您是否尝试仅部署应用程序文件夹?不是 .WAR 文件。
-
@Loc 我猜 WebSphere 出了点问题,特别是如果它在其他服务器上也能正常工作 :) 然而,这发生在客户的站点上,并且在我的实验室中很容易重现......无论如何,我该如何“仅部署应用程序文件夹”,好吗?我承认我对 WebSphere 很陌生 :(
-
如何“仅部署应用程序文件夹”?这对我来说也是新的。我可以在Tomcat中做到这一点。请尝试将您的应用程序放入 WAS_INSTALL_DIR/runtime/installapps/YOUR APPLICATION。未测试。
标签: java servlets websphere web-inf requestdispatcher