Java 将RequestDispatcher.forward()转发到“下的资源”/WEB-INF“;不';我不能在WebSphere中工作

Java 将RequestDispatcher.forward()转发到“下的资源”/WEB-INF“;不';我不能在WebSphere中工作,java,servlets,websphere,web-inf,requestdispatcher,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等人的支持下运行良好,但在WebSphere7中不起作用。 我得到的错误(在浏览器和服务器日志中)是 最

在我的一个servlet中,我调用
RequestDispatcher.forward()
调用WEB-INF文件夹下的某个静态资源:

request
    .getRequestDispatcher( "/WEB-INF/some/path/image.gif" )
        .forward( request, response );
导航到此servlet在Tomcat、Jetty等人的支持下运行良好,但在WebSphere7中不起作用。 我得到的错误(在浏览器和服务器日志中)是

最初,我假设WebSphere可能需要一些特定的配置来允许内部转发到WEB-INF下的资源,但我没有搜索到任何有用的东西

你知道为什么会这样吗


提前谢谢

您将获得HTTP 403,这意味着禁用。尝试将image.gif移出WEB-INF。这可能会起作用。似乎应该将
exposeWebInfOnDispatch
属性设置为
true
,以使WebSphere中的servlet可以访问WEB-INF。我从他那里得到了这个答案


在WebSphere7管理控制台中

  • 转到“服务器”=>“服务器类型”=>“WebSphere应用程序服务器” 在左边
  • 在页面主要部分的列表中选择合适的服务器
  • 单击“容器设置”=>“Web容器设置”=>“Web “集装箱”
  • 转到右侧的“自定义属性”
  • 添加新属性:

    • 名称:
      exposeWebInFonSpatch
    • 值:
      true

  • 检查您的部署。那文件真的在那里吗?@SotiriosDelimanolis是的。同样的战争在其他服务器下也会发生……转发到WEB-INF中的资源是可能的。我认为这是JavaEE的一个规范,因为它是内部调用。403表示资源存在,但它是禁止的、不可访问的。WebSphere有问题。您是否仅尝试部署应用程序文件夹?不是.WAR文件。@Loc我想WebSphere可能有问题,特别是在其他服务器上工作时:)然而,这种情况发生在客户的站点上,在我的实验室中很容易重现。。。无论如何,我该如何“仅部署应用程序文件夹”呢?我承认我对WebSphere非常陌生:(如何“仅部署应用程序文件夹”?这对我来说也是新鲜事。我可以在Tomcat中完成。请尝试将您的应用程序放入WAS_INSTALL_DIR/runtime/installapps/your application。未经测试。我想会的,但这不是重点。我不希望该文件可以直接从网络访问。也许您可以将其作为资源读取,然后用c将内容写回响应正确的http内容类型,而不是尝试进行请求转发,也许,我还可以考虑其他解决方法。但是,我正在尝试了解这里发生了什么以及为什么。感谢您在这里更新所发现的内容。很高兴论坛提供了解决方案。您在哪里设置了此选项?是否可以在部署人员中设置此选项t descriptor?@Cypher刚刚在答案中添加了详细的步骤。不确定您是否可以在部署描述符中执行此操作。不过,我绝对不是WebSphere专家。。。
    Error 403: SRVE0190E: File not found: /WEB-INF/some/path/image.gif