我在 Linux Amazon EC2 实例上运行 JBoss 4.0.4.GA。我从浏览器连接到一个 URL,该 URL 映射到下载 Applet 的 JSP。 Applet 代码对 session Bean 进行 JNDI 查找。我在浏览器的 Java 控制台上看到的错误是:
Connection refused to host: 10.xxx.xxx.xxx
nested exception is:
java.net.ConnectException: Connection timed out: connect
即我的小程序正在尝试连接到实例的私有(private) IP,这当然注定会失败。
执行 JNDI 查找的[删节]代码是:
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 通信吗?
最佳答案
将 -Djava.rmi.server.hostname=public-IP 添加到 JBoss 启动解决了此问题。
关于java - EC2 实例上从 Applet 到 JBoss 的 JNDI 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414829/