不久前我花了一些时间对此进行调查,尽管 WL10 将 WAR 解包到一个临时目录中,但它不会修改该位置的部署计划中列出的文件。我还尝试使用 getResource/getResourceAsStream 读取整个 web.xml,发现它也是原始的、未修改的文件。
我从来没有弄清楚 WL 如何应用这些更改,以便它们被 ServletContext 拾取,而它们在其他任何地方都不可见。我的猜测是它使用了一些技巧来覆盖这些文件的加载并动态应用更改。
在与它斗争了一段时间后,我最终确定了以下内容来列出启动时 init 参数的值:
if (log.isTraceEnabled()) {
final Enumeration<String> names = context.getInitParameterNames();
while (names.hasMoreElements()) {
final String key = names.nextElement();
final String value = context.getInitParameter(key);
log.trace("Init Parameter '{}' = '{}'", key, value);
}
}
(使用 slf4j 进行日志记录)
当然,如果部署计划有问题并且没有设置值,这也无济于事,但这是我能想到的最好的方法。