我在使用 WildFly 8.x 时遇到了非常奇怪的行为(也使用 8.1 和 8.0 进行了测试)。如果我将 WAR 部署为 ROOT(在 jboss-web.xml 中将“/”设置为上下文根),我的 JAX-RS 资源类将具有不同的 session ID(每个资源类将具有唯一的 session ID)。但事实上,如果我将“/”以外的任何其他内容设置为上下文根,一切都会按我最初的预期运行(每个 JAX-RS 资源类共享相同的 session )。 我知道 REST 服务是无状态的,我不必担心 session ,但我很好奇为什么它会这样。有人有什么想法吗?
谢谢!
这是一个示例最小项目,您可以在其中重现此问题:https://github.com/aberkes/cdi-sessionscoped-bean-demo
最佳答案
这个想法是,默认情况下,如果您部署到 ROOT,jboss 不会使用固定的 cookie 路径参数。这是为了当您有其他应用程序在不同的子文件夹中运行并且需要它们自己的独立 session 时的情况。 要更改此行为,您可以使用
<session-config>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>
web.xml 中的参数。那么所有的jsessions都会被绑定(bind)到根路径。
关于java - JAX-RS 资源的不同 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25973944/