似乎在使用standalone-ha.xml而不是standalone.xml时添加了JSESSIONID中的instance-id,至少在我的情况下是这样:
#Standalone(未附加实例ID)
[mad@max bin]$ ./standalone.sh -Djboss.instance.id=node1 -Djboss.node.name=node1
[mad@max bin]$ curl -I http://127.0.0.1:8080/cluster-test/
HTTP/1.1 200 OK
Connection: keep-alive
X-Powered-By: Undertow/1
X-Powered-By: JSP/2.3
Set-Cookie: JSESSIONID=vEE6VucqPJBCbewsJceWKRjVAYvT1oxWy0ItAWwu; path=/cluster-test
Server: JBoss-EAP/7
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 100
Date: Mon, 29 Jan 2018 18:06:22 GMT
#Standalone-HA(附加了实例ID)
[mad@max bin]$ ./standalone.sh -c standalone-ha.xml -Djboss.instance.id=node1 -Djboss.node.name=node1
[mad@max bin]$ curl -I http://127.0.0.1:8080/cluster-test/
HTTP/1.1 200 OK
Connection: keep-alive
X-Powered-By: Undertow/1
X-Powered-By: JSP/2.3
Set-Cookie: JSESSIONID=5y1NCo9CM963aO5-OurRJAx2LMFl8wIi0AV3PJzm.node1; path=/cluster-test
Server: JBoss-EAP/7
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 100
Date: Mon, 29 Jan 2018 18:03:38 GMT
正如我们在独立模式中看到的那样,JSESSIONID中没有附加.node1。
在两种情况下都进行配置:
<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${jboss.instance.id}">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
这对我没有意义。有时你所拥有的只是一个Apache / Nginx Web服务器在两个或多个节点之间加载balacing,而不需要HA配置。这会产生粘性会话的大问题,有什么建议吗?
在域模式下,它会发生相同的情况:如果您从默认配置文件创建服务器组,则不会将任何实例ID添加到JSESSIONID。
答案 0 :(得分:0)
为什么要引入新的系统属性? instance-id已默认为已解析的$ {jboss.node.name}表达式。未指定时,该属性默认为服务器的主机名。