Wildfly 10.1.0中的会话问题

hap*_*ppy 5 java cookies session session-cookies wildfly

我有两个网络应用程序1. test.war 2. birt.war

我在birt url的http响应头中设置了cookie

Cookie cookie = new Cookie(GlobalConstants.JSESSIONID, request.getSession(false).getId());
cookie.setPath("/birt");
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)

然后我在javascript中用适当的url参数打开birt url

window.open(url);
Run Code Online (Sandbox Code Playgroud)

但是来自birt的下一个请求我得到了新的JSESSIONID.这适用于JBoss6 AS.

我能够在开发者控制台中看到cookie

**Request 1**
http://192.168.10.7:8080/test

Cookies are 
Response Cookie :
JSESSIONID : 
value = 9G6bzvsF-ijbynGTmbWp7Ml4E5KFVHiEPlSflh16
Path = /birt

**Request 2**

http://192.168.10.7:8080/birt

Cookies are 
Response Cookie :
JSESSIONID : 
value = **xrLqLb5-8Vvqlkk2GKyapqwJZm5dJnyvFQOia9IM.node1** // new cookie
Path = /birt

Request Cookie :
JSESSIONID : 
value = 9G6bzvsF-ijbynGTmbWp7Ml4E5KFVHiEPlSflh16
Path = /birt
Run Code Online (Sandbox Code Playgroud)

我也尝试在jboss-all.xml中添加两个战争,但即使这样也行不通.

<shared-session-config xmlns="urn:jboss:shared-session-config:1.0">
        <session-config>
            <cookie-config>
                <path>/</path>
            </cookie-config>
        </session-config>
</shared-session-config>
Run Code Online (Sandbox Code Playgroud)

小智 4

我相信您的部署模型与 Undertow 支持的部署模型不同:

Undertow 允许您在耳朵中的 wars之间共享会话(如果明确配置为这样做)。请注意,如果您使用此功能,您的应用程序可能无法移植,因为这不是标准的 servlet 功能。

为了启用此功能,您必须在ear的META-INF目录中的jboss-all.xml文件中包含shared-session-config元素

请参考https://docs.jboss.org/author/display/WFLY10/Web+(Undertow)+Reference+Guide