如何在JBoss 5中禁用群集?

时间:2011-11-18 13:27:03

标签: jboss5.x cluster-computing

有没有人知道如何在JBoss 5.1.0中停用自动群集? 我们在每台开发者机器上运行JBoss,因为我们都在同一个网络中,所以他们会进行自动群集。如果我们每个人都可以获得自己的组播IP,那么问题就可以解决,但是网络硬件不具备这个能力。

jboss中没有开关来停用它吗?

3 个答案:

答案 0 :(得分:4)

在Windows下的Eclipse下,您可以使用以下JVM属性运行服务器(请参阅打开启动配置):

-Djboss.partition.name=${env_var:COMPUTERNAME}

这样每个开发人员机器都有自己的集群(如果只运行一个服务器,则只有一个服务器)。在Linux下,您需要将COMPUTERNAME替换为HOSTNAME

如果从命令行运行JBoss AS,则在Windows下使用-Djboss.partition.name=%COMPUTERNAME%之类的内容(未经测试)。

请注意,使用-Djgroups.udp.ip_ttl=0(如另一个答案中所提出的)具有以下缺点:

  • 服务器启动速度较慢(在我的情况下为4分钟而不是1分钟);
  • 有很多NAKACK警告/错误日志;
  • JGroups UDP多播仅限于本地机器,可能与基于JGroupds UDP的其他应用程序冲突;
  • 具有相同配置的同一台计算机上的其他服务器将位于同一群集中,这可能是不可取的。

答案 1 :(得分:4)

您可以使用不同的多播或分区名称来避免冲突。

但是,如果要在“生产”或“全部”配置中禁用群集,则需要执行以下操作:

删除

  • 农场/
  • 部署-hasingleton /
  • 部署/簇/

在deploy / messaging / * - persistence-service.xml中,将Clustered更改为false:

<attribute name="Clustered>false</attribute>

并删除

<depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>

在conf / bootstrap / profile.xml中,替换

<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.StaticClusteredProfileFactory">

<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.repository.StaticProfileFactory">

并删除下面几行的“farmURIs”属性。

使用默认配置文件中的http-invoker.sar替换deploy / httpha-invoker.sar

在deployers / clustering-deployer-jboss-beans.xml中,注释掉WebAppClusteringDependencyDeployer。

在SOA-P中,如果要删除群集,则需要执行一些额外的步骤。

  • 将server / default / deploy / jbpm.esb / hibernate.cfg.xml复制到服务器// deploy / jbpm.esb / hibernate.cfg.xml

  • 删除服务器// deploy / riftsaw *和cp -R server / default / deploy / riftsaw * server // deploy /

答案 2 :(得分:3)

您可以通过将多播数据包的TTL(生存时间)设置为零来执行此操作。仍然会启用群集,但在开发者计算机上运行的JBoss服务器都不能相互定位。

启动JBoss时,设置jgroups.udp.ip_ttl系统属性,例如

-Djgroups.udp.ip_ttl=0

你很可能需要将其破解成JBoss启动脚本。