Address already in use: JVM_Bind 1098 1099 3873

来源:互联网 发布:米格29k 苏33 知乎 编辑:程序博客网 时间:2024/06/06 02:31
 

Jboss的EJB应用如果在防火墙后面,通过端口1098和1099调用,需要另外打开3873端口供socket调用,同时需要修改rmi-server地址为外部IP地址或域名。

配置文件一共需要修改四处,下面以域babyken.org内,防火墙后主机IP192.168.1.25为例,

1.首先修改jboss-service.xml,在ejb端口1098附近,修改CallByValue值为true
<attribute name="CallByValue">true</attribute>

2.然后修改ejb3.deployer中jboss-service.xml文件,主要是添加域名到3873的调用中
------
<mbean code="org.jboss.remoting.transport.Connector"
name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="Configuration">
<config>
<invoker transport="socket">
<attribute name="numAcceptThreads">1</attribute>
<attribute name="maxPoolSize">300</attribute>
<attribute name="clientMaxPoolSize" isParam="true">50</attribute>
<attribute name="timeout" isParam="true">60000</attribute>
<attribute name="serverBindAddress">${jboss.bind.address}</attribute>
<attribute name="serverBindPort">3873</attribute>
<!-- that's the important setting -->
<attribute name="clientConnectAddress">babyken.org</attribute>
<attribute name="clientConnectPort">3873</attribute>
<attribute name="backlog">200</attribute>
</invoker>
<handlers>
<handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</config>

</attribute>
</mbean>
------

3.设置java启动选项,添加rmi-server的外部地址和禁用本地域名解析到启动脚本
Windows脚本例:set JAVA_OPTS=-Djava.rmi.server.hostname= babyken.org -Djava.rmi.server.useLocalHostname=false
Unix脚本例:添加到jboss启动配置文件run.conf中即可。

4.用run.sh --host=192.168.1.25启动服务或添加--host=192.168.1.25到启动脚本。

1.在使用Jboss 4.2GA 遇到的问题. 以下是以default 模式启动的Jboss .启动参数 -c default /all
(1). localhost可以访问与本机IP不能访问
解决方式:
修改JBOSS_HOME\server\default\deploy\jboss-web.deployer下的server.xml 将address改为0.0.0.0或者你的实际IP 重启JBOSS 然后就可以通过ip访问。

(3)在windows 客户端调用 Linux 服务端 遇到org.jboss.remoting.CannotConnectException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://127.0.0.1:3873/]
解决方法: 修改 JBOSS_HOME/server/default/deploy/ejb3.deployer/META-INF/jboss-services.xml 文件中的${jboss.bind.address}:3873 为linux_home_ip:3873

以上两个问题也可以通过以下设置解决:
For Windows, use
run.bat -b 0.0.0.0

for Linux use
run.sh -b 0.0.0.0

经验证主要有以下几个地方需要改动,用来避免启动时的地址已经被绑定的异常。

1. $JBoss_home/server/default/deploy/ejb3.deployer/META-INF/jboss-service.xml 修改3873端口的值;

2. $JBoss_home/server/default/deploy/jboss-web.deployer/server.xml 修改8080,8009,8443端口值。

3. $JBoss_home/server/default/conf/jboss-service.xml 修改8083,1098,1099,4444,4445,4446端口值

4. $JBoss_home/server/default/conf/jboss-minimal.xml 修改1099端口值,与3中保持一致。

5. $JBoss_home/server/default/deploy/jms/uil2-service.xml 修改8093端口值。


转自:http://hi.baidu.com/dabei0/blog/item/d409e4221a80eeac4623e897.html
原创粉丝点击