博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一台机器运行多个JBoss多实例
阅读量:5992 次
发布时间:2019-06-20

本文共 2546 字,大约阅读时间需要 8 分钟。

 

我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关闭、重启等操作都不会影响到其它实例上面的应用的正常运行,我们知道JBoss启动时默认发布的不同的服务需要开放一些端口,如果只是简单地拷贝两套JBoss或者在一个JBoss中启动多个配置的话,同时启动多个JBoss实例会由于端口冲突而导致JBoss无法启动。

遇到这种情况可能大家最容易想到的解决办法就是既然端口冲突的话,那我就修改端口呗,这种方法当然也可以,但是JBoss不像Tomcat那样,Tomcat只需要修改两三个端口即可,而JBoss默认发布的服务端口包括http协议的8080、AJP协议的8009、JNP服务的1099、RMI命名服务的1098、RMI/JRMP invoker的4444端口等,而且不是在同一个文件中配置的,有些在server.xml中,有些在配置下的jboss-service.xml文件中,手工修改不但繁琐而且极易出错,尤其是实例多的话。
不过幸运的是JBoss提供了另外一种简便的方法:Binding Manager服务,不需要繁琐的端口配置就可以实现多实例运行端口不冲突,详细步骤如下:
以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(默认注释掉)如下:

Xml代码  
  1. <mbean code="org.jboss.services.binding.ServiceBindingManager"  
  2. name="jboss.system:service=ServiceBindingManager">  
  3. <attribute name="ServerName">ports-01</attribute>  
  4. <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>  
  5. <attribute name="StoreFactoryClassName">  
  6. org.jboss.services.binding.XMLServicesStoreFactory   
  7. </attribute>  
  8. </mbean>  
ports-01
${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml
org.jboss.services.binding.XMLServicesStoreFactory
 

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

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

Java代码  
  1. run.bat -c node1 -b 192.168.10.100  
  2. run.bat -c node2 -b 192.168.10.100  
run.bat -c node1 -b 192.168.10.100run.bat -c node2 -b 192.168.10.100

 

4、访问地址

node1访问地址:(默认不配置的情况)或者(使用port-02的情况)
node2访问地址:(使用port-01的情况)
大家也许注意到端口的规律,默认情况下是8080,其它实例的端口依次在8080的基础上增大100,对应关系如下:

Java代码  
  1. port-default     8080  
  2. port-01          8180  
  3. port-02          8280  
  4. port-03          8380  
port-default     8080port-01          8180port-02          8280port-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要求不一样的情况)。
等等

转载地址:http://prtlx.baihongyu.com/

你可能感兴趣的文章
bash的位置参数轮替(shift)
查看>>
PIX配置手册二(telnet和ssh)
查看>>
MySQL高可用之MHA
查看>>
python的一些基础的知识
查看>>
centos6.5突然没有Yum命令
查看>>
无法启动Outlook,无法打开Outlook窗口,无法打开文件夹的集合
查看>>
报告称三季度Android、iOS垄断智能机市场96%份额
查看>>
java启动dos命令收集笔记一
查看>>
图片无法显示,载入制定url失败
查看>>
如何在MAP/REDUCE中不检查输出路径?
查看>>
Redis系列--6、Redis Java连接操作
查看>>
Python之encode与decode浅析
查看>>
MPLS TE 流量工程路径选择原理和配置模板 for CISCO
查看>>
mysql replication(主从复制)(二)MSS模式
查看>>
APP-V序列化服务器部署,应用程序虚拟化部署笔记四
查看>>
一段查看终端端口的asp代码
查看>>
关闭默认共享-注册表-批处理
查看>>
apache_1.3.41+mysql-4.0.26+php-4.4.8+Redhat5 linux
查看>>
在Eclipse中使用Checkstyle
查看>>
Hive查询失败:no LazyObject for VOID
查看>>