现在的位置: 首页 > 综合 > 正文

解决在JBoss上跨IP调用EJB时抛出CommunicationException异常的问题!!!

2013年09月15日 ⁄ 综合 ⁄ 共 1023字 ⁄ 字号 评论关闭

我在本地电脑开发的EJB在本地调用完全没有问题,当把客户端放在另外一台电脑上面调用的时候就抛出异常:

 javax.naming.CommunicationException: Could not obtain connection to any of these urls:

主要是因为找不到这个IP地址的问题。熟悉Linux相关知识的童鞋都知道一个端口是绑定在某个地址上的,可以是一个,也可以是多个,一个端口在同一个地址上不能被两个应用占有;出现这个问题一般是因为你使用的是JBoss4.2系列及其之后的版本,因为从这个系列开始,Jboss默认绑定的端口由之前的0.0.0.0变成了127.0.0.1;前者表示绑定当前服务器下所有地址,包括自身的IP、127.0.0.1;而后者只绑定了127.0.0.1,而没有绑定本机IP,通过IP去访问应用自然也就无法成功了,因为访问的IP地址没有开放对应的端口;对于默认的这种情况,一般来说jboss是要和tomcat搭配使用的,tomcat暴露应用外部访问的端口,然后tomcat再监听本地(也就是127.0.0.1)的端口;

 

那该如何解决呢?

1、打开%JBOSS_HOME%/server/default/deploy/jbossweb.sar目录,编辑server.xml,找到

<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"                                                               connectionTimeout="20000" redirectPort="8443" />

 

<Connector protocol="AJP/1.3" port="8009" ddress="${jboss.bind.address}redirectPort="8443" />

将上面的address="${jboss.bind.address}修改为address="0.0.0.0"。

 

2、在启run.bat时命令变为:run.bat -b 0.0.0.0。如果是在eclipse开发环境下的话,打开Servers视图,双击Jboss服务器,再点击Overview视图中的Open launch configuration,在弹出来的对话框里(Program arguments),加入-b 0.0.0.0,确定之后重启Jboss,即可。

 

 

抱歉!评论已关闭.