Одновременный запуск JBoss AS 5 и JBoss AS 4

Я думал, что это будет FAQ по JBoss, но не могу его найти.

Я хотел бы запустить JBoss 4 и JBoss 5 одновременно. Я вручную изменил все порты на сервере / экземпляре JBoss 5 по умолчанию, изменив ведущую цифру порта на 9, и, похоже, это сработало. Я могу запустить JBoss 4 и JBoss 5 без конфликтов портов.

Один из моих коллег сказал, что, по его мнению, он слышал, что существует способ «перебазировать» JBoss 5, чтобы переместить все номера портов на определенную величину. Это было бы более чистым решением, чем редактирование настроек порта вручную.

Есть ли простой способ изменить настройки порта в JBoss 5, чтобы он мог работать одновременно с JBoss 4?

Ответов (5)

Решение

Два хороших ответа. Псевдоним 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

Может быть канонический способ сделать это, но на работе мы сделали это, вставив маркер замены в файлы конфигурации, что было написано сценарием. Вероятно, вы можете найти в Интернете список всех портов, которые вам нужно изменить.

Как только вы это сделаете, не составит труда установить неперекрывающиеся окна портов, как вы предлагаете.

Вот пример команды запуска, которую мы использовали (которую можно было бы улучшить):

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

Я не знаю опции "rebase", но один простой подход - установить псевдоним IP и указать параметр -b 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 на одном хосте.

Это немного похоже на старую тему, но я недавно задавал себе тот же вопрос при миграции Jboss AS 4 на 5 в нашей DMZ. Поскольку я не смог найти недавних сообщений об этом, я подумал, что добавлю сюда свои 2 цента. Из первого ответа я написал эти 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

Обратите внимание, что сценарий первой остановки использует порт JNDI по умолчанию для JBoss. Но с повышенными портами, которые приносит второй сценарий запуска, второй сценарий остановки использует 1199 (по умолчанию + 100) в качестве порта JNDI для использования при отправке команды выключения.

Надеюсь, это кому-то поможет.

Обратите внимание, что свойство 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