我正在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 下 -无效。
- 把它包在一个罐子里,放在 WEB-INF/lib 下——没用。
- 将 jar 放在 Tomcat/lib 下 -没有用。
据我了解,每个资源/类请求都通过 WebAppClassloader,它按以下顺序查看事物,
- Jvm 引导带
- 系统加载器
- 网络信息/类
- 网络信息/库
- 共享/库
在我的实际应用程序中,我使用的是嵌入式 tomcat,目标是通过 jar 将属性文件外部化(在战争之外)。因此,通过上述测试来了解 tomcat 的基本资源加载。
有人可以对上述测试中缺少的内容有所了解。通常,如果获取请求通过类加载器,它不应该在所有情况下都能找到文件。