我认为这将是一个JBoss FAQ,但我找不到它。
我想同时运行JBoss 4和JBoss 5。我通过将端口的前导数字更改为9来手动更改JBoss 5服务器/默认实例上的所有端口,它似乎可以工作。我可以启动JBoss 4和JBoss 5,没有端口冲突。
我的一位同事说,他认为他听说有一种方法可以“重新绑定”JBoss 5以将所有端口号移动指定的数量。这比手动编辑端口设置更简洁。
是否有一种简单的方法可以更改JBoss 5中的端口设置,以便它可以与JBoss 4同时运行?
答案 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中读取的。默认端口配置文件名称如下: