【发布时间】:2014-08-25 10:50:25
【问题描述】:
我在 tomcat 7 中尝试一个简单的 Web 应用程序。它在 index.html 中有一个 javascript 调用,它加载一个属性文件。使用以下代码进行 get 调用,
var req = new XMLHttpRequest();
req.open("GET", "xyz.properties");
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
}
}
}
req.send();
尝试了以下用例,
- 将属性文件直接保存在 war 文件中,即在 WEB-INF 之外 - 这可行。
- 将其保存在 WEB-INF/classes 下 - 不起作用。
- 将其包装在 jar 中并保存在 WEB-INF/lib 下 - 不起作用。
- 将 jar 放在 Tomcat/lib 下 - 不起作用。
据我了解,每个资源/类请求都通过 WebAppClassloader,它按以下顺序查看事物,
- Jvm 引导带
- 系统加载器
- web-inf/类
- web-inf/lib
- 共享/库
在我的实际应用程序中,我使用的是嵌入式 tomcat,目标是通过 jar 将属性文件外部化(在战争之外)。因此,通过上述测试来了解 tomcat 的基本资源加载。
有人可以对上述测试中缺少的内容有所了解吗?通常如果get请求通过类加载器,它不应该在所有情况下都能找到文件吗?
【问题讨论】:
标签: java tomcat7 war web-inf embedded-tomcat-7