我在 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 通信吗?