我有两个网络应用程序 test.war 2. birt.war
我在birt url的 然后我在javascript中用适当的url参数打开birt url,如 但是来自birt的下一个请求我得到了新的JSESSIONID。这适用于JBoss6 AS。 我可以在开发者控制台中看到Cookie 此外,我尝试在jboss-all.xml中添加两个战争,但即使这样也行不通。Cookie cookie = new Cookie(GlobalConstants.JSESSIONID, request.getSession(false).getId());
cookie.setPath("/birt");
response.addCookie(cookie);
window.open(url);
**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
<shared-session-config xmlns="urn:jboss:shared-session-config:1.0">
<session-config>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>
</shared-session-config>
答案 0 :(得分:2)
我相信您的部署模型与Undertow支持的部署模型不同:
Undertow允许您在明确配置的情况下分享战争中的会话之间的会话。请注意,如果您使用此功能,您的应用程序可能无法移植,因为这不是标准的servlet功能。
为了启用此功能,您必须在耳朵的META-INF目录中的 jboss-all.xml文件中包含shared-session-config元素
请参考https://docs.jboss.org/author/display/WFLY10/Web+(Undertow)+Reference+Guide
答案 1 :(得分:2)
通过在underow子系统(domain.xml / standalone.xml)中配置单点登录属性,我们在Wildfly 10.1中的战争之间共享相同的会话。像这样:
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener max-post-size="1073741824" name="default" socket-binding="http"/>
<host alias="localhost" name="default-host">
<single-sign-on path="/"/>
</host>
</server>
.
.
.
</subsystem>
在jboss-web.xml中,在war文件中,我们将disable-cross-context属性设置为false:
<jboss-web>
<context-root>/test</context-root>
<disable-cross-context>false</disable-cross-context>
.
.
.
</jboss-web>
如果这不起作用,请提供您的战争文件。