RequestDispatcher.forward()到“/ WEB-INF”下的资源在WebSphere中不起作用

时间:2013-12-04 14:41:23

标签: java servlets websphere web-inf requestdispatcher

在我的一个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下的资源,但我没有谷歌任何有用的东西。

任何想法为什么会发生这种情况?

提前致谢!

2 个答案:

答案 0 :(得分:6)

似乎应该将exposeWebInfOnDispatch属性设置为true,以便为WebSphere中的servlet提供WEB-INF。我从WebSphere forum得到了这个答案。


在WebSphere 7管理控制台中,

  1. 转到“服务器”=> “服务器类型”=> “WebSphere应用程序服务器” 在左边
  2. 在页面主要部分的列表中选择适当的服务器
  3. 点击“容器设置”=> “Web容器设置”=> “网络 容器“
  4. 转到右侧的“自定义属性”
  5. 添加新属性:

    • 姓名:exposeWebInfOnDispatch
    • 价值:true

答案 1 :(得分:0)

您正在获取HTTP 403,这意味着禁止使用。尝试从WEB-INF中移出image.gif。这可能有用