【问题标题】:JBOSS AS 7 custom class loader not workingJBOSS AS 7 自定义类加载器不工作
【发布时间】: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


【解决方案1】:

正如其他人所说,JBoss AS 7 不是基于 OSGi,它使用自己的模块系统 (JBoss Modules)。您正在做的事情(对类加载器的反思)违反了任何规则,完全不受支持并且只是偶然地工作。你你应该是这样的:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2013-03-09
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2014-07-16
    • 2014-01-29
    相关资源
    最近更新 更多