日期:2014-05-18  浏览次数:20969 次

两个系统共用session的问题?
服务器tomcat  
我有两个单独的应用系统A和B,现在是各自有各自的登陆界面,我想让他们用一个登陆界面能进,再点各自链接进入相应系统,我把登陆也做成了一个系统,用session保存登陆者的信息,但是登陆系统中保存的session不能传到A或B系统中,请问有什么办法可让这几个系统共用session所保存的用户信息

------解决方案--------------------
当setAttribute时,将session中的数据持久化到数据库中。
当getAttribute时,将数据库中的数据写入session中。
------解决方案--------------------
可以试试这个,虽然有点复杂
http://www.blogjava.net/yida/archive/2007/04/03/55466.html
------解决方案--------------------
你可以在从登陆系统中要进入A或B系统时把session中的用户信息取出,保存在request范围内传给AB,而session则消除掉.
不过我不知道你为什么要这样做,有什么好处?
------解决方案--------------------
我觉得session 如果不是特别大,可以存到cookie去,
自己做一个对session的封装,先保存到哪儿都可以
------解决方案--------------------
进入系统后,把session值传给A和B,然后A和B页面setAttribute;
------解决方案--------------------
唯一的方法就是把session中保存的值存到数据库
要不然不可能共同访问的
------解决方案--------------------
我认为,在登陆的页面只要判断:是登陆A还是B,并且把验证的信息传到相应A或B。

然后由A或B进行验证,并把信息保存在session中就可以了。

就是说:把验证和信息的保存,放在具体的系统中做就可以了。
------解决方案--------------------
主要思路應該就是將Session的資料放在一個公用的地方,基本有三种方式了,cookie,公共文件系統和DataBase。
------解决方案--------------------
设置server.xml中<Context>的crossContext属性为TRUE,把应用A的session放到ServletContext中,这样另外一个应用B可以从ServletContext中取得A应用程序的引用。示例代码如下, 
应用程序A 
ServletContext contextA = getServletContext();
contextA.setAttribute("appA", sessionA);
应用程序B 
contextA = context.getContext("/appA"); 
HttpSession sessionA = (HttpSession)contextA.getAttribute("appA");

看下ServletContext.getContext(java.lang.String path)的用法。

记得给分啊



------解决方案--------------------
我们公司有这样的应用

但两个系统之间的跳转只有一个出入口

实现的思路:
A系统做一个跳转至B系统的入口,通过隐藏表单形式或URL带参数的形式将A系统session中的登录对象数据(如登录帐号 姓名等)传至B系统,B系统接收数据后组合为登录对象保存至B系统的session中
B系统也相应做一个这样的跳转至A系统的入口