很老的线程,但我得到了一些有用的答案。正如 JBoss 问题中的“David Lloyd”所言:
在 AS7 中,这只是使用包含协议处理程序工厂的模块名称调用 org.jboss.modules.Module#registerURLStreamHandlerFactoryModule() 并确保该模块具有 META-INF/services/java 的问题。 net.URLStreamHandler 文件。或者,您可以在 jboss.protocol.handler.modules 系统属性中指定模块名称,它的工作方式与 java.protocol.handler.pkgs 类似,只是它不接受来自应用程序类路径的包名称列表,而是接受一个列表来自引导模块加载器的模块名称。
完整的细节在这里:https ://issues.jboss.org/browse/AS7-1562
好吧,就我而言,我只是将实现更改为使用 Spring 的 PathMatchingResourcePatternResolver:
ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
try {
Resource [] mappingLocations = patternResolver.getResources("classpath*:" + myBaseXmlPath + "/**/*.xml");
for(int i = 0; i < mappingLocations.length; i++) {
// do whatever you want ...
System.out.println(mappingLocations[i].getFile());
}
}
catch(IOException e) {
throw new RuntimeException(e);
}
它已经通过代理类加载器来处理“vfs”。