CDI:从多个ClassLoader中发现bean

时间:2014-10-19 16:54:23

标签: java classloader cdi

我的CDI扩展程序存在问题。我使用beforeBeanDiscovery方法将多个类添加到CDI bean发现:

public void beforeBeanDiscovery(@Observes BeforeBeanDiscovery bbd, BeanManager beanManager) {
  Class clazz = MyClassLoader.loadClass("com.my.example.clazz");
  final AnnotatedType<?> annotatedType = beanManager.createAnnotatedType(clazz);
  bbd.addAnnotatedType(annotatedType, annotatedType.toString());
}

这很好用,我的所有豆子都被发现了。当我从多个ClassLoader加载我的类时,会出现问题。每次ClassLoader更改时,前一个ClassLoader中添加的类都会丢失。

这是我从多个ClassLoader加载我的类的方法:

  for (MyClassLoader cl : classLoaders) {
    for (Class<?> clazz : cl.getClasses()) {
      final AnnotatedType<?> annotatedType = beanManager.createAnnotatedType(clazz);
      bbd.addAnnotatedType(annotatedType, annotatedType.toString());
    }
  }

任何人都可以向我解释为什么会发生这种情况以及如何避免这种行为?

提前致谢。 最好的祝福, 格里

0 个答案:

没有答案