我正在阅读几篇文章中的“可移植全局JNDI名称”,例如,在这里和那里,但我无法理解这种语法是否仅适用于入站机器查找(或者如果服务器是集群的,可能是入站服务器查找)。
即,它是否只是试图解决同一台机器/服务器上的模块和应用程序之间的查找问题?
因为我不断看到引用此功能并使用@Remote
的示例,我认为它可以很好地发生在跨机器/服务器上。
如果它确实只解析了对机器/服务器的内部查找,我会很感激,如果有人可以指出我在服务器之间如何与@Remote
一起使用它的正确方向(我猜我需要的地方前缀主持人姓名)
谢谢,
以太
答案 0 :(得分:1)
您可以从另一台机器调用EJB组件,这就是为什么@Remote anotation存在。喜欢
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();
答案 1 :(得分:1)
在这种情况下,您可以在描述符文件中使用它,然后您可以使用@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