在一台服务其上启动多个Jboss服务,端口会出现冲突,如果修改一个一个修改默认端口的话,会比较复杂;为此Jboss提供了一种统一管理多个实例的方法(ServiceBindingManager),基本思想是jboss提供一个服务器端口绑定文件--xxx-bindings.xml,里面定义了多个以server-name为标志的端口,它就作为统一的端口绑定配置文件。然后在每个服务器实例的jboss-server.xml中注册一个端口绑定服务ServiceBindingManager,该服务用参数:
  ServerName:指定xxx-bindings.xml对应的端口配置
  StoreURL: 指定xx-bindings.xml文件的位置
一旦该服务注册,则Tomcat下server.xml的端口设置被忽略,而启用新的端口配置。

实施步骤:
1.拷贝docs\examples\binding-manager\sample-bindings.xml的文件到server下,重新命名为server-bindings.xml,文件里面已经内置了4个server的端口绑定,因此在默认情况下,你至少可以启用4个jboss服务实例。

2.在jboss\server\default\conf\jboss-service.xml文件中,查询到

   <mbean code="org.jboss.services.binding.ServiceBindingManager"
     name="jboss.system:service=ServiceBindingManager">
     <attribute name="ServerName">ports-01</attribute>
     <attribute name="StoreURL">${jboss.home.url}/server/cod-bindings.xml</attribute>
     <attribute name="StoreFactoryClassName">
       org.jboss.services.binding.XMLServicesStoreFactory
     </attribute>
   </mbean>

将注释去除,并修改name=ServerName值,值包括posts-default,posts-01,posts-02,posts-03.

在cod-bindings.xml可以查询到ports-01的端口值(如果文件不存在,请拷贝同版本到相应目录)。
3. 启动各个服务实例。 run.bat -c default:

./run.sh -c default -b 0.0.0.0

后台启动:nohup ./run.sh -c default -b 0.0.0.0 > /dev/null &

Logo

更多推荐