Есть ли у кого-нибудь опыт или советы по настройке нескольких экземпляров JBoss 5.1.x на одном компьютере с 1 сетевой картой?
Вот что я сделал:
На данный момент есть 2 экземпляра, но второй экземпляр загружается неправильно из-за, вероятно, нескольких конфликтов портов. Например: порт http для обоих экземпляров оказывается 8080, который он получает из строки # 49 в C: \ myjboss \ server \ all \ conf \ bindingservice.beans \ META-INF \ bindings-jboss-beans.xml файл. Ранее при загрузке сервера он явно получает значение из строки №63 того же файла. Я не знаю, почему он получает часть конфигурации порта из строки № 49, а другую часть из строки № 63. Смущенный.
Я также пробовал: . \ run.bat -Djboss.service.binding.set = порты-01 -c порты-01 и это не имело большого значения.
Есть идеи о том, что я делаю неправильно?
Вы также можете настроить несколько экземпляров jboss, переименовав run.bat и создав новый run.bat с параметром -c instance-name. Затем вы сможете запустить Jboss как службу и правильно вызвать run.bat.
Я заставил это работать самостоятельно. Ответом были такие команды:
. \ run.bat -Djboss.service.binding.set = порты-01 -c порты-01
. \ run.bat -Djboss.service.binding.set = порты-02 -c порты-02
Кроме того, мне пришлось скопировать server / default в 2 новых каталога с именами server / ports-01 и server / ports-02 ...
Затем в сервере \ ports-01 \ conf \ bindingservice.beans \ META-INF мне пришлось удалить из него ссылки на экземпляры ports-02, ports-03 и default.
Затем в сервере \ ports-02 \ conf \ bindingservice.beans \ META-INF мне пришлось удалить из него ссылки на экземпляры ports-01, ports-03 и default.
Затем, наконец, я удалил каталоги «стандартный», «Интернет» и «по умолчанию» из установки по умолчанию в каталоге сервера.
Затем я запустил оба сервера с указанными выше командами и нестандартный, они работают.
Кроме того, вот пакетный файл для кластерного запуска вместо отдельных экземпляров:
@echo off
start .\bin\run.bat -c ports-01 -g MyLocal -u 239.255.100.100 -b 127.0.0.1 -Djboss.messaging.ServerPeerID=1 -Djboss.service.binding.set=ports-01
@echo Wait until first server finishes starting and then hit
@echo any key to start the second server in the cluster...
pause
start .\bin\run.bat -c ports-02 -g MyLocal -u 239.255.100.100 -b 127.0.0.1 -Djboss.messaging.ServerPeerID=2 -Djboss.service.binding.set=ports-02
Вместо использования BindingManager вы можете назначить более одного адреса своему сетевому интерфейсу (по крайней мере, если вы контролируете свою сеть) и позволить каждому экземпляру jboss запускаться, используя свой собственный адрес (используя -b
возможность run.(bat|sh)
). Это также возможно на локальном интерфейсе обратной связи (127.0.0.1, 127.0.0.2, ...).
Быстрое продолжение сообщения Mafro о нескольких IP-адресах - в зависимости от того, сколько МНОГИХ экземпляров вы хотите запустить на одном хосте, схема множественной IP-адресации может быть наиболее стабильной. Как только вы начнете получать до 4-5 экземпляров JBoss на одном хосте (а также в зависимости от того, какие J2EE-сервисы вы включили в своем приложении, если таковые имеются), вы можете вскоре столкнуться с проблемами конфликта портов при использовании реализации «портов». .
Множественные IP-адреса позволят вам запускать все ваши J2EE и JBoss сервисы на их портах по умолчанию и избежать многих «сценариев поиска конфликтов портов», с которыми вы сталкиваетесь при запуске более одного экземпляра.
Последнее замечание, согласно вики JBoss, использование нескольких IP-адресов является «предпочтительным решением», особенно для производственных сред - http://community.jboss.org/wiki/ConfiguringMultipleJBossInstancesOnOnemachine. По этой ссылке можно найти дополнительные ресурсы по использованию Binding Manager для настройки служб и приложений JBoss во избежание конфликтов.
Если вы не используете RMI или удаленное взаимодействие, вы можете настроить jboss на использование только одного порта. Это очень утомительная работа (тонны файлов конфигурации), но она возможна, если вам действительно нужно.
Для этого: - удалите все службы, которые вы не используете - если вы не можете удалить вызывающего, вы, вероятно, можете установить transport = "local", чтобы он использовался в транспорте памяти - установите для портов оставшейся службы значение - 1 - Установите следующие системные свойства, чтобы отключить порты управления арджуной: com.arjuna.ats.arjuna.coordinator.transactionStatusManagerEnable = NO com.arjuna.ats.arjuna.recovery.recoveryListener = NO
Файлы конфигурации, которые вам обязательно нужно изменить: - jboss-service.xml - отключить все службы, которые вам не нужны - legacy-invokers-service.xml (удалить устаревшие службы, если возможно) - messaging / messaging-bisocket-service.xml: change транспорт на местный вместо bisocket
Будет еще несколько файлов.
Остается только jboss, который прослушивает веб-порт, и еще один случайно выбранный порт, для которого я еще не знаю, как использовать. Это упростит запуск нескольких экземпляров на одном хосте.