JBoss5.1.0部署多个实例

导读:本篇文章讲解 JBoss5.1.0部署多个实例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

        实际开发中,使用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。复制后如果启动,还是会有端口冲突的问题,而且该如何启动呢?

JBoss5.1.0部署多个实例

(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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!