JBoss5.1.0部署多个实例

15 篇文章 0 订阅

        实际开发中,使用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

----------------------------------------------------------------------------------------

上述两种方法,肯定是第二种方式简单一些。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值