1

我在 Linux Amazon EC2 实例上运行 JBoss 4.0.4.GA。我从浏览器连接到一个 URL,该 URL 映射到下载 Applet 的 JSP。Applet 代码对会话 Bean 进行 JNDI 查找。我在浏览器的 Java 控制台上看到的错误是:

Connection refused to host: 10.xxx.xxx.xxx
nested exception is: 
    java.net.ConnectException: Connection timed out: connect

即我的小程序正在尝试连接到实例的私有IP,这当然是注定要失败的。

执行 JNDI 查找的 [abridged] 代码是:

System.setProperty(InitialContext.PROVIDER_URL, "jnp://<public ip of EC2 instance>:1099");
InitialContext ic = new InitialContext(null);
Object o = ic.lookup("ejb/....MySessionBean");

当我在 Java 控制台中打开跟踪时,我可以看到正在向内部 IP 上的端口 1098 发出请求:

network: Connecting http://<public ip>:1099/ with proxy=DIRECT
network: Connecting http://<private ip>:1098/ with proxy=DIRECT

有人可以告诉我如何在外部 IP 上进行 1098 通信吗?

4

1 回答 1

1

将 -Djava.rmi.server.hostname=public-IP 添加到 JBoss 启动解决了这个问题。

于 2012-05-08T08:47:00.633 回答