我有一个打包如下的应用程序:
+EAR
+WAR
+ejb.jar
+lib
+core.jar
+plugin1.jar
+plugin2.jar
...
每个“pluginX.jar”在根目录下都包含一个spring 配置文件。当应用程序启动时,core.jar 会尝试加载 spring 配置文件:
String matchString = "classpath*:/./Plugin.*.spring.xml";
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources(matchString);
这适用于 JBoss EAP 5.1,但不适用于 WebSphere 7。
我尝试直接加载资源:
ClassLoader cl = this.getClass().getClassLoader();
log.info("class loader: " + cl.toString());
URL u = cl.getResource("Plugin.1.spring.xml");
并得到了相同的结果,尽管 WebSphere 的日志告诉本地类路径包含“pluginX.jar”:
com.ibm.ws.classloader.CompoundClassLoader@48da48da[app:CG EAR]
本地类路径:/opt/IBM/WAS7/AppServer/profiles/srv01/installedApp/cell01/CG.EAR.ear/lib/pluginX.jar
父级:com.ibm.ws.classloader.ProtectionClassLoader@4c654c65
委托模式:PARENT_LAST
有任何想法吗?