我有一個EJB注入一個奇怪的問題在GlassFish 3.也許我只是沒有完全理解我做什麼:)Glassfish的EJB 3注無法
因此,這是一個問題:我的項目包括2個模塊將與gradle組裝。
- 模塊A
- 模塊B
模塊A是一個通常的glassfish模塊也工作正常。模塊B包含通用人員。模塊B也是A的依賴關係。模塊A將作爲* .war歸檔文件部署到glassfish中,模塊B將作爲* .jar歸檔文件存儲在相應的lib文件夾中:
module-a.war and somewere inside of它../lib/module-b.jar
我想要的是:在模塊B中創建一個「通用」無狀態bean並在模塊A中使用它。但它不起作用...
在模塊BI創建一個bean:
@Stateless
public class GeneralPurposeBean {}
,我嘗試使用它在該模塊的如下S:
...
@EJB
private GeneralPurposeBean genPurpBean;
...
因此,如何我已經提到的GeneralPurposeBean在的* .jar
每次當我嘗試使用它失敗,以下異常豆:
javax.ejb.CreateException: Could not create stateless EJB
當我將bean移動到模塊A上,但它可以正常工作,但我希望將此bean與其他模塊共享,這些模塊將在未來開發。有人可以向我解釋什麼是錯的嗎?所以這個bean將被識別,但它不能被創建。我通過調試發現的是:
JCDIServiceImpl#_createJCDIInjectionContext
無法將bean識別爲企業bean。因此,可直接訪問的* .war中的所有內容都將被正確創建,而不是* .jar中的內容。
將它們放入唯一的EAR(企業檔案)中,然後再試一次 – Riadh
嘗試使用'@ Remote'註釋您的'GeneralPurposeBean'實現的接口。然後,在您的ModuleA上,按以下方式使用它:'@EJB GeneralPurposeBeanInterface genPurpBean;'。 – aribeiro
[JavaEE 6 WAR vs EAR中的打包EJB]的可能重複(http://stackoverflow.com/questions/4441237/packaging-ejb-in-javaee-6-war-vs-ear) –