2016-04-27 76 views
0

我創建了一個Java EE應用程序,並向EJB項目添加了一個無狀態會話Bean。 EJB項目是web/WAR項目中的一個依賴項,我在我的一個servlet中注入了在EJB項目中創建的EJB。這工作正常,我能夠在Web應用程序項目的servlet中部署和調用此EJB的方法。我的困惑是,我認爲EJB必須在EJB容器中有一個接口,它們既可以是本地的,也可以是遠程的。然而在我的例子中,我根本不需要接口,並且能夠直接調用EJB,我認爲至少需要一個本地接口?EJB企業應用程序不需要EJB接口

回答

1

由於EJB 3.1,您不再需要用於本地服務的EJB接口。任何POJO類都帶有註釋@Stateless,@Stateful@Singleton將是一個企業會話bean。

返回自然契約一個類的契約包含所有的公共方法 。公共方法打算供其客戶使用 。 Enterprise JavaBeans 3.1 bean的無界面視圖在EJB 3.1 規範(JSR 318)的第3.4.4章中定義如下:

「...會話Bean的無界面視圖是本地視圖 公開了豆類的公共方法,而不使用 單獨的業務接口......「

隱藏所有私有方法。具有包私有和受保護可見性的方法僅對同一包中的類可見 ,並且它們通常僅用於測試目的而被訪問。 JUnit測試 類與「正在測試的類」(CUT)位於同一個包中,並且嘲笑不方便的引用,通常直接訪問 包專用或受保護的字段。

檢查:http://www.oracle.com/technetwork/articles/java/intondemand-1444614.html

+0

感謝,並沒有意識到這種變化的。最好還是創建本地接口?如果沒有接口視圖的功能與本地接口視圖相同,本地接口的意義何在? – joe

+0

一旦你有一個遠程接口,如果你想在本地使用你的會話bean,你將需要指定一個本地接口。如果你不會公開你的bean,我認爲你不需要創建一個本地的。 – Jaumzera