Запуск JBoss AS 5 и JBoss AS 4 одновременно - PullRequest
3 голосов
/ 26 февраля 2009

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

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

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

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

Ответы [ 5 ]

10 голосов
/ 27 февраля 2009

Два хороших ответа. Псевдоним 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 голосов
/ 27 февраля 2009

Я не знаю опции «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 на одном хосте.

1 голос
/ 09 июля 2010

Обратите внимание, что свойство 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
1 голос
/ 07 ноября 2009

Это немного похоже на старую тему, но я недавно задавал себе такой же вопрос при переносе 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 &

Но что еще более важно с этим решением, я в конечном итоге спросил себя, как остановить один из этих экземпляров, не отбрасывая другой. И вот к чему приходят следующие 2 сценария.

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 для использования при отправке команды выключения.

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

1 голос
/ 26 февраля 2009

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

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

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...