【发布时间】:2013-08-30 18:30:54
【问题描述】:
我们最近迁移到 JBOSS AS 7。由于它基于 OSGi,并且所有模块都是隔离的,因此我们遇到了问题。
我们的一个 jars 由 URLclassloader 从 JBOSS 模块之外的指定目录加载。
Class[] parameters = new Class[]{URL.class};
URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;
Method method = sysclass.getDeclaredMethod("addURL",parameters);
method.setAccessible(true);
method.invoke(sysloader,new Object[]{ flist[i].toURI().toURL()});
flist[i] 包含要加载的完整路径的 jar。
这在以前工作的地方,在 AS 7 之后,这个类没有被加载。
我知道您可以将这些 jar 添加到模块文件夹并指定依赖项。但我们希望这能奏效。
有解决办法吗?
【问题讨论】:
-
FWIW JBoss AS 7 不基于 OSGi。它使用 JBoss 模块进行隔离,但它不是 OSGi。但是它确实支持 OSGi。
-
即便如此,由于这种模块化,我还是遇到了问题。
-
有没有办法克服这个问题?或者什么应该是正确的方法?
-
我投了赞成票,因为我有同样的问题。 @NeilBartlett 为什么这是一个坏主意?我们有一个框架 web 应用程序,它支持通过模块 jar 添加新功能。我们从外部目录加载新模块,而不使用 URLClassLoader 重新部署 Web 应用程序。现在用 AS7 我做不到。任何可以无缝运行一两年的事情都不是一个坏主意。
标签: jboss osgi jboss7.x classloader