实际开发中,使用JBoss部署经常会遇到需要部署多个实例的情况,即便是在使用eclipse开发中,也会遇到,下面介绍两种部署多实例的方法。windows和Linux环境通用。
JBoss默认的部署应用的路径是{JBoss_Home}\server\default\deploy\,下面可以部署war包或是ear包。
1.第一种:复制JBoss
这种方式最好理解,直接把JBoss的安装目录复制一份。但复制只是开始,复制后启动会发现有很多端口冲突的问题,下面列举需要修改的端口:
(1)配置文件 server.xml
文件目录:{JBoss_Home}\server\default\deploy\jbossweb.sar\server.xml
需要修改的端口:8080、8443、8009
(2)配置文件 bindings-jboss-beans.xml
文件目录:{JBoss_Home}\server\default\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
需要修改的端口:1090、1098、1099、4444、4445、4446、4457、4712、4713、4714、8083
(3)配置文件 ejb3-connectors-jboss-beans.xml
文件目录:{JBoss_Home}\server\default\deploy\ejb3-connectors-jboss-beans.xml
需要修改的端口:3873
注意:基本上需要修改端口的就是上述三个文件了,其中还有好多端口还没有修改,如果在使用一些功能的过程中出现端口冲突,可以继续修改。
2.第二种:复制default
这个复制不同于第一种方法,只需把目录{JBoss_Home}\server\下的 default文件夹复制一份,重新命名为 node1。复制后如果启动,还是会有端口冲突的问题,而且该如何启动呢?
(1)解决端口冲突
其实,JBoss也考虑到了部署多实例的问题,JBoss提供了配置文件,只需修改一个参数即可。配置文件:{JBoss_Home}\server\node1\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
<bean name="ServiceBindingManagementObject"
class="org.jboss.services.binding.managed.ServiceBindingManagementObject">
<constructor>
<!-- The name of the set of bindings to use for this server -->
<parameter>${jboss.service.binding.set:ports-default}</parameter>
<!-- The binding sets -->
<parameter>
<set>
<inject bean="PortsDefaultBindings"/>
<inject bean="Ports01Bindings"/>
<inject bean="Ports02Bindings"/>
<inject bean="Ports03Bindings"/>
</set>
</parameter>
<!-- Base binding metadata that is used to create bindings for each set -->
<parameter><inject bean="StandardBindings"/></parameter>
</constructor>
</bean>
<!-- The ports-default bindings are obtained by taking the base bindings and adding 0 to each port value -->
<bean name="PortsDefaultBindings" class="org.jboss.services.binding.impl.ServiceBindingSet">
<constructor>
<!-- The name of the set -->
<parameter>ports-default</parameter>
<!-- Default host name -->
<parameter>${jboss.bind.address}</parameter>
<!-- The port offset -->
<parameter>0</parameter>
<!-- Set of bindings to which the "offset by X" approach can't be applied -->
<parameter><null/></parameter>
</constructor>
</bean>
<!-- The ports-01 bindings are obtained by taking the base bindings and adding 100 to each port value -->
<bean name="Ports01Bindings" class="org.jboss.services.binding.impl.ServiceBindingSet">
<constructor>
<!-- The name of the set -->
<parameter>ports-01</parameter>
<!-- Default host name -->
<parameter>${jboss.bind.address}</parameter>
<!-- The port offset -->
<parameter>100</parameter>
<!-- Set of bindings to which the "offset by X" approach can't be applied -->
<parameter><null/></parameter>
</constructor>
</bean>
<!-- The ports-02 bindings are obtained by taking ports-default and adding 200 to each port value -->
<bean name="Ports02Bindings" class="org.jboss.services.binding.impl.ServiceBindingSet">
<constructor>
<!-- The name of the set -->
<parameter>ports-02</parameter>
<!-- Default host name -->
<parameter>${jboss.bind.address}</parameter>
<!-- The port offset -->
<parameter>200</parameter>
<!-- Set of bindings to which the "offset by X" approach can't be applied -->
<parameter><null/></parameter>
</constructor>
</bean>
<!-- The ports-03 bindings are obtained by taking ports-default and adding 300 to each port value -->
<bean name="Ports03Bindings" class="org.jboss.services.binding.impl.ServiceBindingSet">
<constructor>
<!-- The name of the set -->
<parameter>ports-03</parameter>
<!-- Default host name -->
<parameter>${jboss.bind.address}</parameter>
<!-- The port offset -->
<parameter>300</parameter>
<!-- Set of bindings to which the "offset by X" approach can't be applied -->
<parameter><null/></parameter>
</constructor>
</bean>
分析:
上述配置文件中有四组端口配置ports-default、ports-01、ports-02、ports-03。默认启动时使用的是ports-default,在<parameter>${jboss.service.binding.set:ports-default}</parameter> 进行配置确定的。
下面以ports-01为例说明其中四个参数:
<constructor>
<!-- The name of the set -->
<parameter>ports-01</parameter>
<!-- Default host name -->
<parameter>${jboss.bind.address}</parameter>
<!-- The port offset -->
<parameter>100</parameter>
<!-- Set of bindings to which the "offset by X" approach can't be applied -->
<parameter><null/></parameter>
</constructor>
第一个参数是端口组的名称;
第二个是绑定IP,默认是本地,实际使用可以设置为0.0.0.0,可供其他服务访问;
第三个是偏移量,就是在默认端口(如8080、8009等)端口的基础上增加量,这里设置100,就是说启动后8080端口会变为8180,其他所有端口都会自增100;上面各组配置中ports-02增加200,ports-03增加300;
第四个参数暂不使用。
问题:测试中发现如果把node01中的8080端口手动改为其他,配置ports-01启动时,可能会报错,无法识别修改后的端口,这个情况只能手动修改8080对应端口。例如我把默认8080端口改为7880,那启动ports-01时,server.xml中需要把7880改为7980,JBoss不会自增。所以,想使用这种自增机制,不要手动改动端口。
(2)启动node1
1> windows下启动
进入到目录 {JBoss_Home}\bin\
执行命令:run.bat -c node01 -b 0.0.0.0 -Djboss.service.binding.set=ports-01
(-c 选择启动的服务,-b 是绑定IP,-Djboss.service.binding.set 是启动端口组名称)
针对每一个node服务可以单独写一个启动脚本,编写node01启动脚本run01.bat 放到{JBoss_Home}\bin\下:
rmdir /s /q "C:\Java\JBoss\jboss-5.1.0.GA\server\node01\tmp"
rmdir /s /q "C:\Java\JBoss\jboss-5.1.0.GA\server\node01\work"
cd C:\Java\JBoss\jboss-5.1.0.GA\bin\
@PAUSE
@call run.bat -c node01 -b 0.0.0.0 -Djboss.service.binding.set=ports-01
2> Linux下启动
进入到目录 {JBoss_Home}\bin\
执行命令:run.sh -c node01 -b 0.0.0.0 -Djboss.service.binding.set=ports-01
编写node01启动脚本run01.sh 放到{JBoss_Home}\bin\下:
#!/bin/sh
nohup sh /home/dams/jboss-5.1.0.GA/bin/run.sh -c node01 -b 0.0.0.0 -Djboss.service.binding.set=ports-01 >/dev/null 2>log &
如果在上述端口组配置文件中设置了<parameter>${jboss.service.binding.set:ports-default}</parameter> 为对应端口组名称,则启动命令可以不要-Djboss.service.binding.set。
—————————————————————————————-
上述两种方法,肯定是第二种方式简单一些。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62139.html