【问题标题】:JBoss 7 - Loading jars programatically from a module classloaderJBoss 7 - 从模块类加载器以编程方式加载 jars
【发布时间】:2013-01-31 19:07:56
【问题描述】:

我有一个已部署到 JBoss 7 的 WAR,它使用其上下文类加载器动态加载 jar 资源。

final ClassLoader cl = Thread.currentThread().getContextClassLoader();
propertiesUrls = cl.getResources(TRANSLATION_PROPERTIES);

但是上下文类加载器只在 WEB-INF/lib 文件夹中寻找资源

来自服务模块加载器的模块“deployment..war:main”的ModuleClassLoader

我如何在 jboss 中获取我拥有资源的特定模块的类加载器。我有需要在 JBOSS_HOME/modules/org/custom/ 中的自定义模块中加载的 jars...

【问题讨论】:

  • 您的 WAR 中是否依赖于您创建的模块?
  • 是的,我有一个 jboss-deployment-structure.xml,它将模块指定为捆绑在 war 的 WEB-INF 文件夹中的依赖项。 JBoss 容器本身似乎可以识别模块中的类。只是它从不同的类加载器加载(模块在 JBoss 7 中加载到它自己的类加载器中),我需要掌握类加载器。当前线程上下文类加载器始终是默认的战争加载器,但我如何进入模块类加载器。
  • 没关系,我必须使用当前的类加载器而不是线程上下文类加载器。 this.getClass().getClassLoader() 而不是 Thread.currentThread().getContextClassLoader()
  • @abhishekhp 您可以将其添加为答案并将其标记为已回答

标签: classloader jboss7.x dynamic-class-loaders


【解决方案1】:

您需要使用当前类加载器而不是线程上下文类加载器。即 this.getClass().getClassLoader() 而不是 Thread.currentThread().getContextClassLoader()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2011-05-30
    • 1970-01-01
    • 2016-09-17
    • 2014-01-29
    相关资源
    最近更新 更多