我正在使用 CDI 创建一个 Java Web 应用程序。 My War 包含各种作为 bean 源的 Jar 文件(包括 META-INF/beans.xml 文件)。当在 JBoss 等 Java EE 容器中运行时,我的 bean 会被自动发现(我目前使用的是 JBoss AS 7.1.1)。这一切运行良好。
我希望能够扩展 Web 应用程序,理想情况下是允许它从存储在可配置位置(即系统属性指定的位置)的 Jar 文件中加载类。这也很好,因为我可以使用类加载器来解析类和资源。我缺少的是让 CDI 扫描这些外部 Jar 文件并包含它们的 beans 的能力。
这将允许我的应用程序托管插件功能,包括新的 REST 资源。我不介意是否必须重新启动应用程序才能获取这些外部 Jar 文件中包含的类和资源。
我看不出有什么办法可以实现这一点。在这种环境下还应该尝试这种做法吗?
最佳答案
I can see no way of achieving this.
您实际上有两个选择:
- 使用CDI extension mechanism使用 bean/bean-archives 在启动时并按照您想要的方式修改它们。查看文档中提供的示例,这应该会给您一个开始。
- 与 BeanManager 合作在执行时。看看this类似的问题。
关于java - 使用 CDI 发现 bean 类的较晚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414232/