【问题标题】:How to access EJB on remote server?如何访问远程服务器上的 EJB?
【发布时间】:2012-03-22 20:24:19
【问题描述】:

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

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

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

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

非常感谢任何帮助!

【问题讨论】:

标签: java glassfish jndi lookup


【解决方案1】:

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

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

希望这会有所帮助...

【讨论】:

  • 对于IIOP 查找,您是否在 Glassfish 中配置了 ORB ->IIOP 或 JNDI 资源?
  • 我只用服务器的ip地址配置了ORB->IIOP。我没有更改默认 JNDI 设置的任何内容。
猜你喜欢
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2017-04-21
  • 2017-06-16
相关资源
最近更新 更多