我将我的 Web 应用程序从 JBOSS 5 升级到 JBOSS 7。在我的 Web 应用程序中,为了获取包含特定文件的 jar,我使用了以下代码行。
static final Pattern _URLJarNamePattern = Pattern.compile(".*[/\\\\](.+)\\.(jar|zip)\\!/.*");;
try {
urls = Thread.currentThread().getContextClassLoader().getResources("META-INF/config.properties");
} catch (IOException e) {
throw new AWGenericException(e);
}
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
Matcher m = _URLJarNamePattern.matcher(url.toExternalForm());
if (m.matches()) {
String jarName = m.group(1);
System.out.println(jarName);
_AWJarUrlsByName.put(jarName, url);
}
}
在我的旧案例(JBOSS 5 服务器)中,url
字符串如下所示:
jar:file:/D:/JBOSS5/3.2.0/server/default/deploy/appl.war/WEB-INF/lib/app.myapp.jar!/META-INF/config.properties
在这里,当我在 JBOSS 5 中运行上述代码时,它根据我输入的模式成功运行并输出 jar 文件名(这里是app.myapp
)
但在 JBOSS 7 的情况下,url
字符串如下所示,根据上述模式导致错误输出
vfs:/E:/Servers/jbossas7/standalone/deployments/appl.war/WEB-INF/lib/app.myapp.jar/META-INF/config.properties,
我的问题是为什么它为相同的代码提供两个输出?是否可以在不更改任何代码的情况下修复它?