同一Tomcat下不同Web应用之间共享Session会话

2019-01-18 21:18

同一Tomcat下不同Web应用之间共享Session会话 2014-03-21

09:38:37 分类: Java技术

实现同一Tomcat下两个WEB应用之间通过session 共享数据。

查看tomcat 关于 HTTP Connector 中有个emptySessionPath 其解释如下:

If set to true, all paths for session cookies will be set to /. This can be useful for portlet specification implementations. If not specified, this attribute is set to false.

A side effect to setting this to true, is that if Tomcat creates a new session it will attempt to use the cookie session id if supplied by the client.

设置为true 发现没有用,在网上搜了一下方法,基本是这样的:

由于每个WEB应用程序都有一个唯一的一个ServletContext 实例对象,自己下面的所有的servlet 共享此ServletContext,利用ServletContext 中的setAttribute() 方法把Session 传递过去,然后在另外一个WEB程序中拿到session实例。

1、修改Tomcat---conf----server.xml文件 把

注意 crossContext 属性:

crossContext: Set to true if you want calls within this application to ServletContext.getContext() to successfully return a request dispatcher for other web applications running on this virtual host. Set to false (the default) in security conscious environments, to make getContext() always return null.

设置为true,说明你可以调用另外一个WEB应用程序,通过ServletContext.getContext() 获得

ServletContext 然后再调用其getAttribute() 得到你要的对象。

2、在 Project_A 中,写入以下代码:

//以下内容用于测试同一tomcat下不同项目之间共享session HttpSession session = req.getSession(); session.setAttribute(\session.setMaxInactiveInterval(1800);

ServletContext ContextA =req.getSession().getServletContext(); ContextA.setAttribute(\//测试

out.println(\

3、在 Project_B 中,写入以下代码取出Session

HttpSession session1 = req .getSession();

ServletContext Context = session1.getServletContext(); // 这里面传递的是 Project_A 的虚拟路径

ServletContext Context1= Context.getContext(\System.out.println(Context1);

HttpSession session2 =(HttpSession)Context1.getAttribute(\System.out.println(\传过来的user为:\

然后重新部署。


同一Tomcat下不同Web应用之间共享Session会话.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:幼儿园常见的57个问题话术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: