在工作中遇到的,如何在一个jboss中运行多个节点(segment)。

我使用的环境是win7、jboss5、jboss6、JDK6

1、jboss5下运行多个实例

     

    第一步不用说,首先要在环境变量中设置好环境变量。

    进入jboss5的server目录下,首先能看见的是default文件夹,要设置多个segment,首先将default文件复制出一份,我将其取名为node1.

    完成这步后,如果不修改任何的配置文件,那么其端口依然为8080,也就是说依然只能启动一个,但是如果改了..\server\default\deploy\jbossweb.sar\server.xml中的端口,那也仅仅只是改了访问的端口,若启动第二个segment会出现端口被占用等异常。

    所以这里要改的是..\server\segment\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml文件。

    打开这个文件,可以看见ports-default、ports-01等一系列的配置,在这里我统一改ports-default:   

 <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 port offset ,一开始不懂,后来明白这个是迁移量,即若将0写为8,则这个segment的访问端口为8088,其他的端口也会有相应的位移。

    现在便可以启动这个修改完的segment,进入使用命令行cd到jboss-5.1.0.GA\bin目录下,输入:

                                         run.bat -c segment -b 0.0.0.0 -Djboss.service.binding.set=ports-default

     : 0.0.0.0指的是Ip地址  这里表示所有用局域网中可以用192.168.1.129来访问   否则只能用127.0.0.1或者localhost    c表示启动那种配制的服务

    而0.0.0.0后面的部分则是表示使用什么端口。

    现在已经可以通过命令启动服务了,但每次启动服务都要输入一堆东西,麻烦,怎么办呢?自己写一个bat文件:

rmdir /s /q "D:\Tools2\EclipsePlugin\JBoss\jboss-5.1.0.GA\server\segment\tmp"
rmdir /s /q "D:\Tools2\EclipsePlugin\JBoss\jboss-5.1.0.GA\server\segment\work"
cd D:\Tools2\EclipsePlugin\JBoss\jboss-5.1.0.GA\bin\
@PAUSE
@call run.bat -c segment -b 0.0.0.0 -Djboss.service.binding.set=ports-default

    单击bat文件便可以启动。

 

2、为jboss6配置多个节点

     jboss6下有domain和standalone两种启动方式,我在这里使用standalone方式启动。

     同样,复制一份standalone文件夹,取名为node1,然后修改配置文件,这里需要注意的是,配置文件和jboss5有很大的不同。

     在jboss6中,主要的配置文件是..\jboss-eap-6.3\standalone\configuration下的standalone.xml文件。打开后找到:  

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
        <socket-binding name="ajp" port="8009"/>
        <socket-binding name="http" port="8080"/>
        <socket-binding name="https" port="8443"/>
        <socket-binding name="remoting" port="4447"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

    深色部分就是迁移量设置的地方,不再像jboss5中有多个迁移量的设置,在jboss6中只有一处。

    然后启动这个节点需要使用的命令:

        standalone.bat -Djboss.node.name=node1 -Djboss.server.base.dir=node1

     当然,通过命令也可以设置更多,这段命令我是从官网的开发文档上找到的: 

$ ./bin/standalone.sh -Djboss.node.name=UNIQUE_NODENAME -Djboss.server.base.dir=EAP_HOME/NODE_DIRECTORY -b IP_ADDRESS -bmanagement MGMT_IP_ADDRESS --server-config=SERVER_CONFIGURATION_FILE -Djboss.socket.binding.port-offset=PORT_OFFSET

    当然官网上的是使用linux服务器的,但和win7的使用方式一致。

    然后像jboss5一样制作bat文件即可。

posted on 2016-04-02 16:04  welv  阅读(1496)  评论(0编辑  收藏  举报