3

我的 WAR 在 TomEE 中正确的上下文根“/myApp”下部署得很好,这样我就可以去http://localhost:8080/myApp

我有一些静态文件:/myApp/WEB-INF/files

通过查看分解的 WAR,文件肯定在那里。我的问题是,在我编写的代码中,servletContext.getResource("/WEB-INF/files/MyFile.json")我收到一个找不到文件的错误,因为它显示日志中的实际路径是: /localhost/myApp/WEB-INF/files/MyFile.json

当我在常规的 tomcat 服务器、Google App Engine 甚至 WebSphere 7 中安装应用程序时,这段代码实际上是有效的。在 TomEE 中,我不是在 webapps 下部署应用程序,而是在 wtpwebapps 下部署应用程序。我已经完成了上下文配置的搜索,但其中大多数都涉及使应用程序具有“”的上下文根(使其成为根应用程序)。

我可以编写一些代码来删除 URL 的“/localhost”部分,但为什么将它放置在那里?

4

2 回答 2

2

这看起来像 Tomcat 的内部 jndi URL 之一,它采用以下形式:

jndi:/hostname/contextPath/pathInWebApp

您似乎发现了一个 TomEE 错误。

于 2013-11-27T10:28:51.330 回答
0

我有同样的问题,试图访问 WEB-INF 文件夹中的 log4j.properties 文件。它在我的本地 tomcat 中工作,它是 tomcat 8,但在运行 tomcat 7 的生产服务器上因 FileNotFoundException 而失败。所以它不是 TomEE。我最终这样做是为了让它工作:

String filePath = context.getRealPath("/") + "/WEB-INF/config/log4j.properties";

这给了我完整的路径。就我而言,它是

/home/tomcat/tomcat7/webapps/MY-APPLICATION
于 2017-04-20T09:56:14.710 回答