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».
То, что я уже пробовал:..
- FacesContext.getCurrentInstance() getExternalContext() getSessionId (истина).
- Не работает, потому что он удаляет идентификатор экземпляра из значения в JSESSIONID.
- Чтение значения JSESSIONID из заголовка «Cookie» (доступно через HttpServletRequest).
- Не работает, если пользователь еще не имеет сеанса (у него нет файла cookie JSESSIONID).
Я рассмотрел избежать проблем, установив идентификатор экземпляра в переменном окружении и настройки standalone.xml для определения экземпляра идентификатора = «$ {my.instance.name}». Затем приложение считывает переменную окружения, чтобы получить идентификатор экземпляра. Это переносится через AS, но подвержено ошибкам конфигурации. В идеале приложение должно получить именно то, что находится на идентификаторе экземпляра, и мне не нужно, чтобы приложение было переносимым.
Этот вопрос похож на «Получение имени экземпляра сервера приложений WebSphere» (Getting instance name of a WebSphere app Server), но для сервера JBoss EAP 7.
Попробуйте использовать 'System.getProperty (" jboss.node.name ")' –