[英]How do I specify a server to get an EJB from?
在Java EE中,從遠程服務器獲取EJB的方法是在JNDI中查找它。 規范定義了給定bean類型的JNDI名稱。
但是,這似乎僅是要從本地計算機上獲取Bean時才使用。 我想像大多數用戶一樣將bean從遠程服務器上刪除。 如何指定服務器URL? 是否將映射傳遞給InitialContext
構造函數?
注意: 另一個問題幾乎相同,但是自從規范定義可移植JNDI名稱以來,這個問題已經過時。
您可以使用與運行服務器端時完全相同的代碼來進行遠程EJB的JNDI查找:
Context context = new InitialContext(); // No properties needed
MyEJB myEjbInstance = (MyEJB) context.lookup("ejb/MyEJB");
或者,當然,您可以注入它:
@EJB
private MyEJB myEjbInstance;
要使命名上下文起作用,您必須將應用程序作為Java EE 應用程序客戶端運行 。 應用程序客戶端與常規的獨立Java程序完全一樣,具有標准的main
方法; 唯一的區別是它需要以不同的方式運行。 Java EE Spec中沒有指定這種方式,因此每個應用程序服務器都有其自己的方式。
例如,GlassFish要求應用程序客戶端在類路徑中包括一些特殊的jar ,並設置幾個系統屬性 。 具體來說,您必須在目錄路徑中包含lib/gf-installer.jar
及其清單所引用的所有jar,並且必須設置org.omg.CORBA.ORBInitialHost
和org.omg.CORBA.ORBInitialPort
系統屬性。
我想從遠程服務器上獲取bean
是的,您需要指定運行/監聽遠程服務器(JNDI服務)的IP /端口。
如何指定服務器URL?
您必須設置屬性: java.naming.provider.url並將其提供給InitialConetxt使用。
這可以通過不同的方式完成:
實例化InitialConetct的此屬性和其他必要屬性的具體值取決於供應商。 JBoss的示例可能是:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://yourServer:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
請記住,如果不指定URL,則無法從遠程服務器獲取EJB存根。 “遠程”是指客戶端和服務器在不同的JVM中運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.