Jboss EAP 7 JSESSIONID instance-id未附加

时间:2018-01-29 20:57:58

标签: wildfly jsessionid mod-jk jboss-eap-7 sticky-session

似乎在使用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。

1 个答案:

答案 0 :(得分:0)

为什么要引入新的系统属性? instance-id已默认为已解析的$ {jboss.node.name}表达式。未指定时,该属性默认为服务器的主机名。