2012-03-22 103 views
3

我正在使用在我的子网(192.168.1.3:3700)中运行的GlassFish-3.1.2服务器。我已经部署了一个企业应用程序,其中包括一个我定义业务方法的EJB。现在我想从我的Java应用程序客户端远程访问EJB。我该如何设置JNDI和。用于查找EJB的InitialContext对象?我如何需要定义属性?顺便说一句。我必须运行“asadmin enabled-secure-admin”才能使GlassFish服务器在LAN上工作。也许我还需要发送我的凭据与属性?如何访问远程服务器上的EJB?

这里是我当前的“解决方案”,这似乎是completley错误:

Properties props = new Properties(); 
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); 
props.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3"); 
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); 
InitialContext ctx = new InitialContext(props); 

TestentityFacadeRemote tfr = (TestentityFacadeRemote)ctx.lookup("java:global/TestEE/TestEE-ejb/TestentityFacadeRemote"); 

当我运行这个PROGRAMM,它只是等待无限......

任何帮助,不胜感激!

+0

退房http://stackoverflow.com/a/3783501/1037626 - 有那里描述了更多的属性。用于'IIOP'查找的 – mgaert 2012-03-22 23:22:39

回答

6

我解决了这个问题,通过设置主机和端口直接由System.setProperty()并使用默认构造函数初始化InitialContext()。请注意,以下行应该是在你的程序的第一个/ main方法:

public static void main(String[] args) { 
    System.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3"); 
    System.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); 
    InitialContext ctx = new InitialContext(); 
    TestentityFacadeRemote tfr = (TestentityFacadeRemote)ctx.lookup("java:global/TestEE/TestEE-ejb/TestentityFacadeRemote!com.acme.remote.TestentityFacade"); 
} 

希望这有助于...

+0

,您是否在Glassfish中配置了ORB - > IIOP或JNDI资源? – Thufir 2015-03-12 14:00:04

+0

我只配置ORB-> IIOP与服务器的IP地址。我没有改变任何默认的JNDI设置。 – salocinx 2015-03-17 21:44:43