2012-07-10 47 views
1

我使用CDI創建Java web應用程序。我的戰爭包括各種JAR文件,這些文件是bean源(包括META-INF/beans.xml文件)。在JBoss等Java EE容器內運行時,我的bean會自動發現(我目前使用的是JBoss AS 7.1.1)。這很好,運作良好。使用CDI的豆發現較晚

我希望能夠擴展Web應用程序,理想情況下允許它從存儲在可配置位置(因此在系統屬性指定的位置)的Jar文件中加載類。這也很好,因爲我可以使用ClassLoader來解析類和資源。我所缺少的是能夠讓CDI掃描這些外部Jar文件幷包含它們的bean。

這將允許我的應用程序託管插件功能,包括新的REST資源。我不介意是否必須重新啓動應用程序才能獲取這些外部Jar文件中包含的類和資源。

我看不出有什麼辦法實現這一點。這甚至在這種環境下應該嘗試嗎?

回答

1

我看不到這樣做的方法。

實際上,你有兩種選擇:

  1. 使用CDI extension mechanism豆類/豆檔案 在啓動時間並修改它們在你希望的方式工作。看一下文檔中提供的例子,這應該給你一個開始。
  2. 使用BeanManager執行時間。看看this類似的問題。
+0

謝謝。我認爲我看到了一種潛在的方法。我創建了一個CDI擴展。它@觀察AfterBeanDiscovery事件並通過搜索插件並將其註冊到事件來響應。這確實可以通過BeanMananager使插件bean可用。 我需要進一步瞭解是否可以註冊插件中可能存在的任何REST資源,但對於基本功能,它似乎解決了我的一些問題。 – William 2012-07-12 13:18:57