2011-03-23 37 views
1


我在幾篇文章中閱讀了關於「Portable Global JNDI名稱」的內容,但我無法理解此語法是否僅適用於入站機器查找(或者可能是入站服務器查找,如果服務器是集羣)。 也就是說,它是否只嘗試解決同一臺機器/服務器上的模塊和應用程序之間的查找問題?
因爲我不斷看到引用此功能的示例,並使用@Remote,我認爲它可以非常好地發生跨機器/服務器。
如果它確實只解決機器/服務器的內部查找,我會很感激,如果有人可以指出我正確的方向與如何在服務器之間使用@Remote(我猜我需要在主機的前綴名稱)。
謝謝,
以太跨機器的可移植jndi語法(EJB3.1)是否可用?

回答

0

您可以從另一臺機器,這就是爲什麼@Remote anotation exists.Like

String host = "10.1.1.111"; 
    String port = "3700"; 

    Properties props = new Properties(); 
    props.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.enterprise.naming.SerialInitContextFactory"); 
    props.setProperty("org.omg.CORBA.ORBInitialHost", host); 

    props.setProperty("org.omg.CORBA.ORBInitialPort", port); 

    InitialContext ctx = new InitialContext(props); 
    TestService ejb = (TestService)ctx.lookup("java:global/XXX/XXX/TestEntityFacade!com.test.service.TestService"); 
    ejb.findAll(); 
+0

謝謝,我想我應該提到的我不感興趣的客戶端查找的例子作爲我usecases只是服務器之間以及通過注射。我試圖瞭解如何以非原始的方式映射ejb成員到它的「起源」 – Ittai 2011-04-14 13:52:20

1

在這種情況下,你可以用提到它在描述符文件,那麼你可以把它注射調用EJB組件使用@EJB

@EJB(name="fooejbref") 
private FooRemote fooRemote; 

在sun-web.xml中:

<ejb-ref> 
    <ejb-ref-name>fooejbref</ejb-ref-name> 
    <jndi-name>corbaname:iiop:host2:3700#Foo</jndi-name> 
</ejb-ref> 

詳情請請看看這個網址http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

+0

再次感謝,這是我目前正在執行查找的方式。我正在尋找一種非特權方式,即不使用sun-web.xml/sun-ejb.xml,而是通過ejb-jar.xml – Ittai 2011-04-20 10:30:55