2

我有一个在 Apache TomEE 上运行的 Java EE 6 Web 应用程序。

我的应用程序定义了几个接口 A、B 和 C。我有多个 .jar 文件,其中包含这些接口的实现。每当客户端发出某个请求时,我的 Web 应用程序都会使用 CDI 扫描这些实现并注入所需的任何实现。

但是,我不想提前按名称配置所有这些实现 .jar 文件。我很想配置所有这些实现 .jar 文件所在的文件夹位置,然后让 CDI 进行发现。我希望 CDI 在每次注入时重新扫描此文件夹,这样我就可以添加和删除 .jar 文件而无需重新启动我的 Web 应用程序。

使用 Tomcat 的 VirtualWebappLoader 或 TomEE (1.6.0) 的 jars.txt,我能够成功设置这样的文件夹并让 CDI 注入在应用程序启动时可用的 .jar bean。然而,

  • 我无法注入在应用程序启动时不可用但后来由我添加的 .jar bean
  • 我的 Web 应用程序继续使用已完全删除 .jar 的注入 bean

我能用 CDI 实现这样的“热部署”吗?如果没有,你能帮我理解为什么吗?

4

1 回答 1

3

不,这是不可能的。CDI 在部署时扫描文件。

于 2013-05-14T00:40:22.873 回答