zig*_*ggy 24 java session jsp tomcat servlets
我一直在寻找在多个warl文件之间共享会话数据的解决方案.我遇到了以下解决方案http://www.fwd.at/tomcat/sharing-session-data-howto.html
它的基本思想是,如果您有多个war文件,则可以使用所使用的第一个上下文的sessionid设置cookie.
可以使用将应用于所有上下文/应用程序的路径来设置cookie.
例如,如果我有3个应用程序的以下配置
/myapp/app1
/myapp/app2
/myapp/app3
Run Code Online (Sandbox Code Playgroud)
我可以按如下方式设置cookie
/ myapp sessionid.
然后,sessionid cookie将被发送到地址中带有/ myapp的任何请求.这允许会话id随后被任何上下文使用.
这种方法的唯一问题是它是在2003年编写的,并在Tomcat 4上进行了测试.
您对此方法有何看法?有没有更好的方法呢?
谢谢
Bal*_*usC 43
那篇文章确实已经过时了.
在Tomcat 5.5和6.0上,您只需在元素中设置emptySessionPath
属性即可.true
<Connector>
/conf/server.xml
<Connector ... emptySessionPath="true">
Run Code Online (Sandbox Code Playgroud)
在Tomcat 7.0上,这已经发生了变化,因为现在可以从Servlet 3.0 API上进行配置.然后可以通过在任何负责任的文件中设置sessionCookiePath
为/
in <Context>
元素来配置Tomcat context.xml
.
<Context ... sessionCookiePath="/">
Run Code Online (Sandbox Code Playgroud)
如上所述,有一个新的Servlet 3.0 API,允许您通过标准API配置会话cookie.您可以通过在以下内容中添加以下内容以声明方式执行此操作web.xml
:
<session-config>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>
Run Code Online (Sandbox Code Playgroud)
或以编程方式SessionCookieConfig
提供ServletContext#getSessionCookieConfig()
.
getServletContext().getSessionCookieConfig().setPath("/");
Run Code Online (Sandbox Code Playgroud)
你可以用ServletContextListener#contextInitialized()
或者做到这一点HttpServlet#init()
.
归档时间: |
|
查看次数: |
36905 次 |
最近记录: |