Tomcat中两个不同项目共享Session

本文研究的是同一个Tomcat目录下的两个不同的应用共享同一个session。由于每个WEB应用程序都有一个唯一的一个ServletContext实例对象,本应用中的所有的servlet共享此ServletContext。利用ServletContext中的setAttribute()方法把Session传递过去 然后在另外一个WEB程序中拿到session实例。

一、修改Tomcat中conf的server.xml文件

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" mlValidation="false"></Host>

修改为:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" mlValidation="false">
 <Context path="/projectA" reloadable="false" crossContext="true"></Context>
 <Context path="/projectB" reloadable="false" crossContext="true"></Context>
</Host>

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()得到对象。
 

二、在项目A中,写入以下代码:

项目A为/projectA
项目B为/projectB

项目A中设置Session:
HttpSession session = req.getSession();
session.setAttribute("name", "Tom");
session.setMaxInactiveInterval(6565);
ServletContext ContextA =req.getSession().getServletContext();
ContextA.setAttribute("session", req.getSession());

项目B中取出Session:
HttpSession session1 =req .getSession();  
ServletContext Context = session1.getServletContext();  
ServletContext Context1= Context.getContext("/myweb"); // 项目A的虚拟路径
HttpSession session2 =(HttpSession)Context1.getAttribute("session");
System.out.println("base传过来的user为:"+session2.getAttribute("name"));

原帖地址:http://www.codesky.net/article/201104/174499.html

时间: 2025-01-13 02:22:36

Tomcat中两个不同项目共享Session的相关文章

vs2008解决方案中两个web项目互相访问问题

问题描述 vs2008解决方案中两个web项目,网站前台需要访问网站后台文件夹里的图片,这个怎么弄呀,求解! 解决方案 解决方案二:不太明白你的情况,一般前台.后台都弄在一个web项目里的,没有必要分成两个项目吧.只要文件路径是对的,就可以访问,跟文件夹在哪里没有关系的.解决方案三:....为毛要两个呢.只要路径对了,和几个项目无关.解决方案四:WebService具体的我也不知道解决方案五:使用webservice或者WCF把图片作为服务提供~

eclipse中svn问题:项目共享的时候,出现如下:项目已有SVN/目录,有可能他先前已经共享

问题描述 eclipse中svn问题:项目共享的时候,出现如下:项目已有SVN/目录,有可能他先前已经共享 求解!多谢了! 解决方案 重新创建工作空间,把你之前 拉的项目断开链接 解决方案二: 项目共享到SVNMyEclipse共享项目到SVN服务器MyEclipse共享项目到SVN服务器 . 解决方案三: 重新创建工作空间,把你之前 拉的项目断开链接

apache2.2+tomcat负载均衡在SSH2项目中session无法共享!!!!!!

问题描述 apache2.2+tomcat负载均衡在SSH2项目中session无法共享!!!!!! 使用apache2.2和三个tomcat实例在同一台机器配置负载均衡成功,基本软件:apache.2.225Tomcat8.0.20Tomcat-connectors-1.2.40使用如下Jsp页面时显示session要以复制且sessionId相同,但是加载实际SSH2实际项目,则发现session丢失且每次都创建新的session请有类似配置经验或解决方案的同仁不吝赐教!<% HttpSes

前端flex后台java的两个独立项目在myeclipse中如何部署到tomcat

问题描述 前端flex后台java的两个独立项目在myeclipse中如何部署到tomcat 我是刚接触前段用flex后台用java的项目,在Myeclipse中分别导入项目后,两个项目怎么编译?以及在deploy project,弹出来的窗口中选择框里没有我刚才导入的那个项目.请问这样的项目怎么部署到tomcat中,如果要手动部署怎么部署?我是新手菜鸟,希望大神能帮我指点详细一点,谢谢,谢谢,谢谢............快过年了,祝您,身体健康!阖家欢乐!财源广进! 解决方案 设置不同的端口即

tomcat5-类加载机制 Tomcat5 shared目录下加载的Spring如何管理Tomcat中部署的多个项目

问题描述 类加载机制 Tomcat5 shared目录下加载的Spring如何管理Tomcat中部署的多个项目 20C 我们知道Tomcat5.x类加载体系结构如下:不同的类加载器加载不同路径上的类或jar包. Bootstrap | System | Common / Catalina Shared / Webapp1 Webapp2有这样一个场景,在Tomcat5.x下部署了10个项目,每个项目都是用Spring来组织和管理的,可以吧Spring放到Tomcat的Common或Shared目

Tomcat中session的管理机制_java

详细描述Tomcat中session的管理机制: 1. 请求过程中的session操作: 简述:在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中.然后再从 request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session,如果sessionId不 存在或者session失效,那么则新建session并且将session信息放入session池,供下次使用. (1)SessionId

java 项目中的链接共用此项目的session。怎么实现

问题描述 java 项目中的链接共用此项目的session.怎么实现 java 项目中插入了很多小型的项目链接,但是都需要登录一遍.对使用者来说很不人性化,我需要怎么做才能只登录一次打开其他链接自动获取当前项目的session 解决方案 利用认证服务器来统一认证 解决方案二: 就是需要进行单点登录嘛,使用Spring security + CAS可以轻松解决 解决方案三: 用 session共享 用memcached和apache服务器就可以实现 session共享了

tomcat启动SVN 下载的项目出现了异常2(只能上传一张,所以问了两次)

问题描述 tomcat启动SVN 下载的项目出现了异常2(只能上传一张,所以问了两次) 解决方案 错误不是有提示么?里面应该有什么东西配置错了 解决方案二: 你查看一下你的配置文件的url吧 解决方案三: 这不是找不到路径吗,,看下路径就行了 解决方案四: SysConfigAdminUtil类里有个地方会去读admin.properties,会在前面拼一个WebRoot的路径 问题原因就是没有找到WebRoot的路径,可以用类似的方法获取路径 String pathStr = this.get

J2EE开发技术点1:Tomcat中开发项目

前言 在以前开发Web项目的时候,使用最多往往是IDE(Eclipse EE或者MyEclipse),在IDE中我们只需要配置一下Tomcat服务器的路径就可以了,写完一个Web项目之后直接部署到Tomcat上就可以了,这一切操作都是很简单的.对于一个Web开发人员而言,使用IDE进行项目开发已经轻车熟路了.而对于在Tomcat中直接部署项目并且进行开发知道的就比较有限了.本着知其然也要知其所以然的学习态度,让我们重新认识纯Tomcat开发的流程. 纯Tomcat开发流程 下载安装Tomcat