Ral*_*lph 6 java jsf ejb glassfish java-ee
我有一个在Glassfish 3.1.2上运行的JSF 2,EJB 3.1,CDI应用程序.我注意到jsession id总是发生变化:每次发送到服务器的请求,重新调整的页面都包含带有新jsession id的links(),即使请求已包含jsession id
我不认为这是正常的,但我不知道是什么原因导致这种行为.
我配置了:
<session-config>
<session-properties>
<property name="enableCookies" value="false" />
<property name="enableURLRewriting" value="true" />
</session-properties>
</session-config>
Run Code Online (Sandbox Code Playgroud)
但是其他所有东西都是默认的,我没有任何奇怪的配置或自定义jsession生成的东西. - 有谁知道什么可以触发Glassfish/JSF来改变sessionId?
例:
该应用程序有一个菜单显示在每个页面上.jsf页面包含:
<h:link outcome="/search/search">search</h:link>
现在我描述请求和响应.请求是简单的HTTP GET请求.响应总是包含完整的页面.没有涉及Ajax.
经过一些基本认证.
用户进入起始页面,它包含一个带有搜索页面链接的菜单,此链接有jsession id(所有其他链接都有相同的jsessionId) - 详细信息;
http://localhost:8080/myApp/start/start.xhtml
<a href="/myApp/search/search.xhtml;jsessionid=8df431e2275052cf2348a4cb793e">search</a>
用户点击该链接; 返回的页面再次包含菜单,但现在所有链接都有另一个sessionjd - 详细信息:
http://localhost:8080/myApp/suche/teilnehmer_suche.xhtml;jsessionid=8df431e2275052cf2348a4cb793e
<a href="/myApp/search/search.xhtml;jsessionid=8ebeefb6df144a2fee97d87a51e6">...
用户再次点击该链接:jsession id再次更改
http://localhost:8080/myApp/suche/teilnehmer_suche.xhtml;jsessionid=8df431e2275052cf2348a4cb793e
<a href="/myApp/search/search.xhtml;jsessionid=8f4021c2fa628ce3b9c12c545cc4">...
我可以一次又一次地点击该链接(以及所有其他链接),但jsession id每次都会更改.
更奇怪的是:在更改配置以使用cookie而不是urlRewriting后,我发现即使对于资源文件也会发生此行为:
客户端请求start.xml没有jsession id,服务器返回Set-Cookie JSESSIONID=a68d3d9260d7ea5fd36a7713eb80; Path=/myapp; HttpOnly
响应头.
之后客户端请求css页面,Cookie JSESSIONID=a68d3d9260d7ea5fd36a7713eb80
服务器发送回css文件,但响应头包含一个新的会话ID:Set-Cookie JSESSIONID=a68d550e5093e246b01ba4220cd3; Path=/myapp; HttpOnly