CDI可以在注射时扫描已配置的文件夹吗? (热部署)

时间:2013-05-13 15:30:11

标签: java java-ee deployment dependency-injection cdi

我在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。然而,

  • 我无法注入那些在app启动时无法使用但后来由我添加的.jar bean
  • 我的网络应用程序一直使用注入的bean,我完全删除了.jar

我是否能够通过CDI实现这种“热部署”? 如果没有,你能帮我理解原因吗?

1 个答案:

答案 0 :(得分:3)

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