2017-01-19 34 views
1

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”。

我已经尝试过:。

  1. FacesContext.getCurrentInstance()getExternalContext()getSessionId(真)。
    • 不起作用,因为它从JSESSIONID中的值中去除了实例id。
  2. 从“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服务器。

+0

尝试使用'System.getProperty(“jboss.node.name”)' –

回答

1

我不知道这是一个错误或功能,但设置实例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”更可接受。