JAX-RS资源的不同会话ID

时间:2014-09-22 12:17:54

标签: java jax-rs wildfly-8

我在使用WildFly 8.x时遇到了一个非常奇怪的行为(也测试了8.1和8.0)。如果我将WAR部署为ROOT(在jboss-web.xml中设置' /'作为context-root),我的JAX-RS资源类将具有不同的会话ID(每个资源类将具有唯一的会话ID)。但事实上,如果我设置除了' /'之外的任何其他内容。作为上下文根,一切都按照我原先的预期工作(每个JAX-RS资源类共享同一个会话)。 我知道REST服务是无状态的,我不必担心会话,但我很好奇为什么它会像那样。有没有人有任何想法?

谢谢!

以下是您可以重现此问题的示例最小项目:https://github.com/aberkes/cdi-sessionscoped-bean-demo

1 个答案:

答案 0 :(得分:1)

这个想法是默认情况下,如果部署到ROOT,jboss不会使用固定的cookie路径参数。当您有其他应用程序在不同的子文件夹中运行并需要自己的独立会话时,就会出现这种情况。 要更改此行为,您可以使用

<session-config>
<cookie-config>
<path>/</path>
</cookie-config> 
</session-config>
web.xml中的

参数。然后所有的jsessions将绑定到根路径。