首先,我要說明什麼,我想在這裏完成。我有一個Java應用程序,定期讀取數據,並呼籲JBoss的EJB無狀態AS 7.1.1進一步的操作(計算數據,並將其保存到數據庫)。然後我有使用JSF 2.0的前端。在一個@ApplicationScoped CDI bean的控制器中,並駐留在JSF項目中,我將EJB注入到它中。現在我需要用於從數據庫獲取數據的EJB。我使用的是因爲這個原因@ApplicationScoped CDI豆:進樣應用範圍的CDI豆成無狀態EJB豆
方面是所有 servlet請求,Web服務調用,EJB遠程方法調用,EJB異步方法調用,EJB超時和消息傳遞之間共享的應用消息驅動的bean,它們在相同的應用程序中執行。應用程序關閉時應用程序上下文被破壞。
我只希望所有客戶端都有一個CDI bean,因爲數據是獨立於用戶的。
現在我想更新@ApplicationScoped CDI豆,這是在JSF項目,EJB bean,這個方法新數據到達時執行的幫助下定義的數據。我已經在@ApplicationScoped CDI bean中成功使用了@Inject,我從EJB項目中注入了EJB。現在我想換一種方式。我試圖從JSF項目中將ApplicationScoped CDI bean注入到EJB bean中。但是,當我寫這我@Inject強調的警告:
@Inject
private CurrentDataController currentDataController;
的警告是:
無豆可享有注射到注射點[JSR-299§5.2.1]
當我嘗試發佈項目時,我得到關於類的錯誤,沒有找到CurrentDataController的異常。
所致:拋出java.lang.ClassNotFoundException:controllers.CurrentDataController從[模塊 「deployment.TestEAR.ear.TestEJB.jar:主」 從服務模塊加載]
看來,EJB項目不能在JSF項目中引用類。它也是在TestEJB.jar中而不是在TestJSF.jar中尋找CurentDataController類。我在這裏錯過了什麼?
我的整個項目的結構如下:
- TestEAR
- TestEJB
- TestEJBClient
- TestJPA
- TestJSF
現在我看後,我將修復約發現我將與我已經發布警告連接的另一問題沒有類定義的錯誤。
修復沒有類定義錯誤(清單)後,我測試了應用程序,它沒有任何問題。您似乎可以將Application scoped bean從JSF .war注入EJB模塊。 –
您在JSF模塊中添加了EJB模塊中的依賴項。它可以工作,但這不是推薦的做法。 –