如何在远程服务器上访问EJB?

时间:2012-03-22 20:24:19

标签: java glassfish jndi lookup

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

这是我目前的“解决方案”,这似乎是完全错误的:

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");

当我运行这个程序时,它只是无限地等待......

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分: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");
}

希望这会有所帮助......