代码之家  ›  专栏  ›  技术社区  ›  Dean Schulze

同时运行JBossAS5和JBossAS4

  •  3
  • Dean Schulze  · 技术社区  · 15 年前

    我以为这是JBoss的常见问题,但我找不到。

    我的一位同事说,他认为他听说有一种方法可以“重新设置”JBoss5的基础,将所有端口号移动指定的数量。这将是一个比手动编辑端口设置更干净的解决方案。

    5 回复  |  直到 11 年前
        1
  •  10
  •   Dean Schulze    15 年前

    两个好答案。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
    
        2
  •  2
  •   jcrossley3    15 年前

    run.sh 绑定到该别名接口。这比更改所有端口容易得多。只要每个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实例。

        3
  •  1
  •   Dana the Sane    15 年前

    可能有一种规范的方法可以做到这一点,但在工作中,我们通过在配置文件中插入一个替换标记来做到这一点,这是脚本编写的。您可能会在线找到需要更改的所有端口的列表。

    一旦您这样做了,按照您的建议设置端口不重叠的端口窗口就不会太麻烦了。

    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
    
        4
  •  1
  •   jpramondon    15 年前

    这是一个老话题,但我最近在DMZ上将Jboss AS 4迁移到5时问了自己同样的问题。因为我最近找不到任何关于这个的帖子,我想我应该在这里加上我的2美分。 从第一个答案开始,我编写了两个sh脚本,让Jboss4和jboss5都运行并记录在单独的文件中:

    start-jboss4.sh:

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

    #!/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
    

        5
  •  1
  •   phatblat Dave DeLong    14 年前

    请注意,jboss.service.binding.set属性仅由jboss 5使用。因此,如果您希望JBoss4位于不同的端口配置文件上,则需要修改${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
    • ports-03