使用JBOSS部署EJB服务后通过RMI访问报错:
javax.naming.CommunicationException: Could not obtain connection to any of these urls: xx.xx.xx.xx:1199 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] 原有时因为JBOSS默认使用本地调用,无法跨服务器访问,需要在启动时添加参数run -b 0.0.0.0或run -b xx.xx.xx.xx(服务器IP)当使用run -b 0.0.0.0的方式启动后,跨服务器远程访问时出现如下错误:
[Root exception is java.rmi.UnknownHostException: Unknown host: l48202b; nested exception is: java.net.UnknownHostException: l48202b] l48202b为服务器机器名。出现该错误需要添加启动参数 -Djava.rmi.server.hostname=serverIP(服务器IP) -Dremoting.bind_by_host=false综上所述一般可采用两种方式配置JBOSS远程服务:
1.JBosss服务器启动时,不要指定了-b 0.0.0.0,做如下修改
run.bat -b serverIP(服务器IP)
这个方法可以,但是有点不方便,jboss内部无法通过local调用ejb了2.修改JBoss启动参数为
run -b 0.0.0.0 -Djava.rmi.server.hostname=serverIP(服务器IP) -Dremoting.bind_by_host=false注意:第一中方式,会是JBoss无法通过local调用ejb,所以如果不存在本地调用可以使用这种方式,否则使用第二中方式。