多个Jboss端口冲突配置;一个Jboss多个server端口配置

JBoss启动时默认发布的不同的服务需要开放一些端口,如果只是简单地拷贝两套JBoss或者在一个JBoss中启动多个server配置的话,会由于端口冲突而导致JBoss无法启动。

这时候我们肯定会想到手动去修改这些发生冲突的端口,可是Jboss需要修改的端口实在是太多,如下:

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端口值。

不过幸运的是JBoss提供了另外一种简便的方法:Binding Manager服务,不需要繁琐的端口配置就可以实现多实例(多个server)运行端口不冲突,详细步骤如下: 

以JBoss 4.2.3 GA为例,假设server下有两个不同的配置node1、node2(名字无所谓,default1、default1也行),%JBOSS_HOME%表示JBoss安装目录。

关键文件是%JBOSS_HOME%\docs\examples\binding-manager\sample-bindings.xml,该文件默认情况下定义了4组不同的端口配置(port-default、port-01、port-02、port-03),也就是说默认情况下支持同一台机器部署4个JBoss实例。

1、node2配置如下
修改node2/conf/jboss-service.xml文件,配置Service Binding(默认注释掉)如下:

<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

这里配置node2使用的是port-01端口配置。

2、node1配置如下
node1默认可以不用配置,正常启动即可,这种情况下使用的是JBoss提供的默认端口8080、8009等,也可以参照第一步的配置,只需修改“ServerName”与node1不一样即可,如ports-02,注意只能是在sample-bindings.xml中定义的四组端口范围内

4、访问地址
node1访问地址:http://192.168.10.100:8080(默认不配置的情况)或者http://192.168.10.100:8280(使用port-02的情况)
node2访问地址:http://192.168.10.100:8180(使用port-01的情况)

大家也许注意到端口的规律,默认情况下是8080,其它实例的端口依次在8080的基础上增大100,对应关系如下:

port-default     8080
port-01          8180
port-02          8280
port-03          8380

当然其他端口如AJP协议端口8009也分别变成8109、8209、8309、8409,其它以此类推

5、注意事项
1)上述配置的前提是每个实例的server.xml中HTTP协议的端口配置均为默认的8080,若该端口修改过,则需要修改sample-bindings.xml中port-default中的默认8080端口为server.xml中HTTP协议端口。
2)上述方法也同样适用于同一台机器上面部署多个JBoss的情况而不是同一个JBoss下多个配置。
3)一般情况下默认的4组端口足够使用,若仍不够,可自行添加其他port组。
4)若可能,仍是推荐不用的实例绑定到不同的IP地址上。

PS.

同一机器多JBoss实例常用场景:
1)32位JVM限制无法使用超过2G的内存,通过多实例可以充分利用服务器上大内存。
2)不用JBoss实例用于不同用途:开发环境、测试环境等。
3)希望在同一个机器上部署不同版本的JBoss。
4)希望在同一个机器上部署基于不同JVM的JBoss(不同应用对JVM要求不一样的情况)。

 

一开始以为这个方法,只能应用于一个Jboss下配置多个server。测试发现,当时用两个Jboss时,用这种方法也是可以的。所以Jboss还是很人性化的。

 

posted @ 2015-09-08 11:09  Jokerone  阅读(4737)  评论(0编辑  收藏  举报