一、前言:
JBoss启动时默认发布的不同的服务需要开放一些端口,如果只是简单地拷贝两套JBoss或者在一个JBoss中启动多个配置的话,同时启动多个JBoss实例会由于端口冲突而导致JBoss无法启动。
JBoss默认发布的服务端口包括http协议的8080、AJP协议的8009、JNP服务的1099、RMI命名服务的1098、RMI/JRMP?invoker的4444端口等,而且不是在同一个文件中配置的,有些在server.xml中,有些在配置下的jboss-service.xml文件中,如果实例多手工修改不但繁琐而且极易出错。
JBoss提供了一种简便的方法:Binding?Manager服务,不需要繁琐的端口配置就可以实现多实例运行端口不冲突。%JBOSS_HOME%\docs\examples\binding-manager\sample-bindings.xml(jboss4),该文件默认情况下定义了4组不同的端口配置(port-default、port-01、port-02、port-03),也就是说默认情况下支持同一台机器部署4个JBoss实例
jboss-5.1.0.GA/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
jboss-4.0.5.GA/docs/examples/binding-manager/sample-bindings.xml


实现方法:
1、在JBOSS_HOME/server下新建实例node1、node2、nodeX...(直接拷贝default即可)
2、分别修改节点下的node1(node2、nodex)/conf/jboss-server.xml中的Server Binding
eg:修改node1/conf/jboss-server.xml取消jboss-server.xml中的如下代码的注释,使其生效
<mbean?code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute?name="ServerName">ports-01</attribute>
<attribute?name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
<attribute?name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
3、port-default默认端口是8080,port-01默认端口是8180,port-02默认端口是8280, port-03默认端口是8280


二、jboss端口设置
1、当jboss和oracle在同一机器上时,通常oracle占用8080端口,这时只需要去修改\deploy\jbossweb-tomcat50.sar\server.xml中。当在同一台机器上运行两个JBOSS实例的时候,则需要修改在default\conf\jboss-service.xml中的1098,1099,4444,4445,8083,default\deploy\jbossweb-tomcat50.sar\server.xml中8080以及default\deploy\jms\uil2-service.xml中的8093端口

2、当在启动命令中采用-Djboss.service.binding.set=ports-xx?指定端口配置后,在deploy/jbossweb.sar中指定HTTP端口(不与其它冲突)时,?HTTP端口是使用jbossweb.sar中配置的端口。

3、在配置jboss时若出现端口占用的情况可以通过netstat -apn查看所有的端口使用情况,通过netstat -apn|grep  port 来查询具体的某一个端口是被哪个进程所使用,进行修改。