同时运行JBoss AS 5和JBoss AS 4

时间:2009-02-26 19:44:13

标签: jboss

我认为这将是一个JBoss FAQ,但我找不到它。

我想同时运行JBoss 4和JBoss 5。我通过将端口的前导数字更改为9来手动更改JBoss 5服务器/默认实例上的所有端口,它似乎可以工作。我可以启动JBoss 4和JBoss 5,没有端口冲突。

我的一位同事说,他认为他听说有一种方法可以“重新绑定”JBoss 5以将所有端口号移动指定的数量。这比手动编辑端口设置更简洁。

是否有一种简单的方法可以更改JBoss 5中的端口设置,以便它可以与JBoss 4同时运行?

5 个答案:

答案 0 :(得分:10)

两个好的答案。 IP别名很聪明。

我也在JBoss论坛上问了这个问题,结果发现你可以调用备用端口绑定(“rebase”选项)。像这样启动JBoss:

run -Djboss.service.binding.set=ports-01 

以下是JBoss论坛上线程的链接(交叉引用此线程):

http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4213775#4213775

答案 1 :(得分:2)

我不知道“rebase”选项,但一种简单的方法是设置IP别名并指定run.sh的-b选项以绑定到该别名接口。这比更改所有端口容易得多。只要每个JBoss实例绑定到自己的地址,端口就可以保持不变。例如,

$ sudo ip addr add dev lo local 127.0.0.100/24
$ run.sh -b 127.0.0.1
$ run.sh -b 127.0.0.100
$ wget http://127.0.0.1:8080
$ wget http://127.0.0.100:8080

瞧!一个主机上有两个JBoss实例。

答案 2 :(得分:1)

可能有一种规范的方法可以做到这一点,但在工作中,我们通过在配置文件中插入替换标记来实现这一点,这些文件是脚本化的。您可以在线查找所有必须更改的端口列表。

执行此操作后,按照建议设置端口非重叠端口窗口并不会太麻烦。

以下是我们使用的启动命令的示例(可以进一步改进):

run.sh -c <service name> -DJPATH=/usr/local/bin:/usr/bin:/bin:/usr/local/jre1.6.0_03/bin/ -Djboss.bind.address=192.168.110.21 \
-Djboss.port.connector=37079 -Djboss.port.classloader=37080 -Djboss.port.naming=37081 -Djboss.port.namingrmi=37082 -Djboss.port.jmxrmi=37083 \
-Djboss.port.pooled=37084 -Djboss.port.jndinaming=37085 -Djboss.port.jndirmi=37086 -Djboss.port.jms=37087 -Djboss.port.ajp=37078

答案 3 :(得分:1)

这是一个很老的话题,但是我最近在我们的DMZ上迁移Jboss AS 4到5时问我自己同样的问题。由于我找不到关于此的最新帖子,我想我会在这里加2美分。 从第一个答案开始,我编写了这两个sh脚本,让Jboss4和5运行并记录在不同的文件中:

start-jboss4.sh:

#!/bin/sh
nohup /etc/jboss-4.2.3.GA/bin/run.sh -b 10.0.0.51 > jboss4.log &

start-jboss5.sh:

#!/bin/sh
nohup /etc/jboss-5.1.0.GA/bin/run.sh -Djboss.service.binding.set=ports-01 -b 10.0.0.51 >> jboss5.log &

但更重要的是,通过这个解决方案,我最终问自己如何在不丢弃另一个实例的情况下停止其中一个实例。这就是下一个剧本的来源。

stop-jboss4.sh:

#!/bin/sh
/etc/jboss-4.2.3.GA/bin/shutdown.sh -S -s jnp://10.0.0.51

stop-jboss5.sh:

#!/bin/sh
/etc/jboss-5.1.0.GA/bin/shutdown.sh -S -s jnp://10.0.0.51:1199

请注意,第一个停止脚本使用JBoss的默认JNDI端口。但是,对于第二个启动脚本带来的升级端口,第二个停止脚本使用1199(默认值+ 100)作为发送关闭命令时使用的JNDI端口。

希望这有助于某人。

答案 4 :(得分:1)

请注意,jboss.service.binding.set属性仅供JBoss 5使用。因此,如果您想在不同的端口配置文件上使用JBoss 4,则需要修改$ {JBOSS_HOME} / server / default / conf / jboss- service.xml中。

查找引用ServiceBindingManager的元素并更改ServerName属性。

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

JBoss 4使用的端口值是从$ {JBOSS_HOME} /docs/examples/binding-manager/sample-bindings.xml中读取的。默认端口配置文件名称如下:

  • 端口默认
  • 端口-01
  • 端口-02
  • 端口-03