爲什麼只有JNDI被用來訪問遠程EJB(不同的JVM,不同的主機)?爲什麼不使用@EJB註釋?爲什麼要使用JNDI? - 遠程EJB調用
在所有的EJB書籍中都提到您可以使用@EJB註釋來訪問遠程EJB。
實施例:http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro004.htm
32.4.4遠程客戶端
企業bean的遠程客戶端具有以下特徵。
它可以在不同的機器,並從企業Bean它 訪問不同的JVM上運行。(它不要求在不同的JVM運行。)
它可以是一個Web組件,應用程序客戶端,或其他企業bean
它可以是一個Web組件,應用程序客戶端,或另一個企業bean。
對於遠程客戶端,企業bean的位置是透明的。
企業bean必須實現業務接口。也就是說,遠程客戶端可能不會通過無界面視圖訪問企業Bean。
要創建的企業Bean允許遠程訪問,你必須:
裝飾企業bean與@Remote註釋業務接口:
@Remote公共接口InterfaceName {...}
或者用@Remote修飾bean類,指定業務接口或 int erfaces:
@Remote(InterfaceName.class) 公共類BeanName實現InterfaceName中{...}
到的企業Bean實現遠程業務接口是通過兩種依賴實現 客戶端訪問注入或JNDI查找。
要通過 依賴注入獲得對企業bean的遠程業務接口的引用,使用javax.ejb。EJB註釋並指定企業bean的 遠程業務接口名稱:
@EJB示例示例;
要通過JNDI獲得對企業bean的遠程業務接口的引用 查找,使用javax.naming.InitialContext中接口的查找方法:
ExampleRemote示例=(ExampleRemote) InitialContext.lookup( 「Java的:全球/對myApp/ExampleRemote」);
上面的代碼不正確?我還沒有看到一個使用依賴注入(@EJB)來訪問遠程EJB的任何代碼。這不可能?
幾個後說,這是不可能的使用@ EJB註釋用於調用遠程EJB:
PD:對不起。我的英語基礎。
作爲你的[第二個鏈接(http://stackoverflow.com/a/16518704/3167508)狀態,「只能當應用程序在同一個服務器實例部署使用@EJB註釋。」 – EJP 2014-09-02 00:34:34
它是由相矛盾如下:「企業bean的遠程客戶機具有以下特徵: 它可以在不同的機器和從企業bean它訪問不同的JVM上運行」 – DavidJesus03 2014-09-02 00:43:54
也:「一個企業級bean實現遠程業務接口是通過兩種依賴注入(@EJB)或JNDI查找完成客戶端的訪問。」 – DavidJesus03 2014-09-02 00:48:00