是否期望通过Jetty的WebAppContext.setExtraClasspath方法包含的.jar文件中的资源优先于.war中具有相同名称/路径的资源加载?
-
我正在将一些依赖项移出.war文件并通过WebAppContext的setExtraClasspath方法(http://www.eclipse.org/jetty/documentation/current/jetty-classloading.html#using-extra-classpath-method)包含它们
在这样做的时候,我遇到了一个问题,其中一个现在移出的.jar文件包含一个ehcache.xml文件,当Thread.currentThread().getContextClassLoader().getResourceAsStream(“ehcache.xml”)
为var text = "Ngo Kim Huynh <the.fallen.angel.9x@gmail.com>";
$("#divContent").append(text);
时,它似乎优先于.war中的文件。使用
现在我知道情况就是如此,我想如果我需要将文件重命名为独特的话,对我来说并不是很大的不便,但我想我想知道......
我是否错误地加载了资源(如果是这样,我怎样才能优先使用.war?)
.war版本之前优先考虑的运气(当.jar被包装在.war中时)只是运气吗?
使用setExtraClasspath这是我必须忍受的预期缺点吗?
我是否遗漏了一些可以为我澄清的文件?
答案 0 :(得分:1)
感谢Jan on the jetty-user's list ...
AFAIK我们不会对额外的类路径做任何特殊处理。命令 添加到作为webapp的URLClassLoader的路径 classloader是:
- 额外的路径
- WEB-INF /类
- WEB-INF / lib中/ *。罐
webapp类加载器getResource(String)方法首先查找自身 在查看父级之前(为了符合servlet规范的反转 类加载要求),但是看起来都被委托给了 URLClassLoader,所以它是jvm实现的任何命令,其中 根据GrepCode http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/misc/URLClassPath.java#URLClassPath.0urls 看起来搜索顺序如上所述。
对我的情况感到难过,但是有道理。