2017-01-19 2 views
1

JBoss EAP 7 Сервера экземпляр идентификатор настроен на standalone.xml, например:Как получить имя экземпляра (экземпляр ИД) 7 экземпляра JBoss EAP служит запрос

<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="node2"> 

У меня есть и среды с балансировкой нагрузки и липкой сессией. Таким образом, клиент получает cookie JSESSIONID с чем-то вроде этого как значение: «ckvLpSqtsN2EjA8WpFqml3UMU5ZIyH2YI29Ir-i.node2».

Вопрос: Я нахожусь на MBean (с доступом к FacesContext). Как я могу получить идентификатор экземпляра сервера, обслуживающего запрос? В приведенном выше сценарии «node2».

То, что я уже пробовал:..

  1. FacesContext.getCurrentInstance() getExternalContext() getSessionId (истина).
    • Не работает, потому что он удаляет идентификатор экземпляра из значения в JSESSIONID.
  2. Чтение значения JSESSIONID из заголовка «Cookie» (доступно через HttpServletRequest).
    • Не работает, если пользователь еще не имеет сеанса (у него нет файла cookie JSESSIONID).

Я рассмотрел избежать проблем, установив идентификатор экземпляра в переменном окружении и настройки standalone.xml для определения экземпляра идентификатора = «$ {my.instance.name}». Затем приложение считывает переменную окружения, чтобы получить идентификатор экземпляра. Это переносится через AS, но подвержено ошибкам конфигурации. В идеале приложение должно получить именно то, что находится на идентификаторе экземпляра, и мне не нужно, чтобы приложение было переносимым.

Этот вопрос похож на «Получение имени экземпляра сервера приложений WebSphere» (Getting instance name of a WebSphere app Server), но для сервера JBoss EAP 7.

+0

Попробуйте использовать 'System.getProperty (" jboss.node.name ")' –

ответ

1

Я не уверен, что это ошибка или особенность, но установка экземпляра идентификатор, как описано в вопросе не изменится jboss.node.name или jboss.server.name:

  • JBoss. node.name устанавливается как имя хоста;
  • jboss.server.name задано как имя хоста;
  • Cookie JSESSIONID имеет экземпляр-экземпляр, прилагаемый к концу.

Однако, добавив имя = «node123» атрибут на <server> тега (верхний элемент уровня по standalone.xml) и удаление атрибута экземпляра идентификатора из прибойных имеют следующие эффекты:

  • jboss.node.name задано как «node123»;
  • jboss.server.name задано как «node123»;
  • Cookie JSESSIONID имеет «node123», добавленный в конце.

Это не совсем тот ответ, который я ожидал, но я считаю его более приемлемым, чем определение настраиваемого свойства, и убедитесь, что свойство находится на «экземпляре-id».

Смежные вопросы