getServletContext()。getResourceAsStream()返回null

时间:2018-04-17 16:43:08

标签: spring-boot gwt tomcat8

我正在使用spring boot 2.0.1.RELEASE。

我正在将应用程序从spring(WAR)迁移到spring-boot。它使用GWT,它使用依赖于getServletContext().getResourseAsStream()方法的servlet按预期工作。 我已在https://github.com/spring-projects/spring-boot/issues/12868上传了一个可重现的项目。

当对http://localhost:8080/mymodule/afile.rpc执行GET请求时,您可以看到文件被返回,但是如果执行http://localhost:8080/mymodule/dispatch,则执行servlet,servlet使用getServletContext().getResourseAsStream()返回相同的文件,但在这种情况下返回null。

有什么想法吗?

我之前看过类似的问题,并标记为已解决,但也许在春季启动2.0.1再次失败。类似问题:#8525

1 个答案:

答案 0 :(得分:1)

根据Andy Wilkinson

  

从类路径提供静态资源:static是一个Spring MVC   由Spring Boot自动配置的功能。 servlet容器   和servlet上下文一无所知是可以预期的   尝试通过servlet上下文访问该文件不起作用。

     

如果您希望servlet容器提供静态内容,那么   应该将它放在servlet容器可以找到它的位置。   例如,在打包为war文件的应用程序的根目录

我最后调整了servlet以使用类加载器而不是servlet上下文来选择文件。