有没有人知道如何在JBoss 5.1.0中停用自动群集? 我们在每台开发者机器上运行JBoss,因为我们都在同一个网络中,所以他们会进行自动群集。如果我们每个人都可以获得自己的组播IP,那么问题就可以解决,但是网络硬件不具备这个能力。
jboss中没有开关来停用它吗?
答案 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
(如另一个答案中所提出的)具有以下缺点:
答案 1 :(得分:4)
您可以使用不同的多播或分区名称来避免冲突。
但是,如果要在“生产”或“全部”配置中禁用群集,则需要执行以下操作:
<attribute name="Clustered>false</attribute>
并删除
<depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.StaticClusteredProfileFactory">
与
<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.repository.StaticProfileFactory">
并删除下面几行的“farmURIs”属性。
在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启动脚本。