JBoss的EAP 7服务器实例-id是standalone.xml配置,如:如何获得一个JBoss EAP 7实例的实例名称(例如-ID)的服务请求
<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="node2">
我有和负载平衡和粘性会话的环境。所以,客户端收到JSESSIONID cookies这样的值作为值:“ckvLpSqtsN2EjA8WpFqml3UMU5ZIyH2YI29Ir-i.node2”。
现在的问题是:我在MBean上(可以访问FacesContext)。我如何获得服务请求的服务器的实例ID?在上面的场景中,“node2”。
我已经尝试过:。
- FacesContext.getCurrentInstance()getExternalContext()getSessionId(真)。
- 不起作用,因为它从JSESSIONID中的值中去除了实例id。
- 从“Cookie”头中读取JSESSIONID值(可通过HttpServletRequest获取)。
- 当用户还没有会话时(他没有JSESSIONID cookie)不起作用。
我曾考虑通过设置在环境变量中的实例ID和配置standalone.xml定义实例-ID =“$ {my.instance.name}”避免的问题。然后,应用程序读取环境变量以获取实例标识。这是跨AS的便携式,但很容易出现配置错误。理想情况下,应用程序应该获得实例id的内容,我不需要该应用程序是可移植的。
此问题与“获取WebSphere应用服务器的实例名称”(Getting instance name of a WebSphere app Server)类似,但是用于JBoss EAP 7服务器。
尝试使用'System.getProperty(“jboss.node.name”)' –