如何获得一个JBoss EAP 7实例的实例名称(例如-ID)的服务请求
问题描述:
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服务器。
答
我不知道这是一个错误或功能,但设置实例ID如问题描述不改变jboss.node.name或jboss.server.name:
- JBoss的。 node.name设置为主机名;
- jboss.server.name设置为主机名;
- Cookie JSESSIONID在末尾附加了实例标识。
然而,添加名称=“node123”属性上<server>
标签(上standalone.xml顶层元素),并从逆流删除的实例-id属性具有以下效果:
- jboss.node.name被设置为“node123”;
- jboss.server.name被设置为“node123”;
- Cookie JSESSIONID在最后附加了“node123”。
这并不是我期待的答案,但我觉得它比定义自定义属性并确保该属性位于“实例ID”更可接受。
尝试使用'System.getProperty(“jboss.node.name”)' –