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

跨项目访问session值如何做?
前段日子听说在同域名下不同项目可以共享session的,是如何实现的?或者有没有项目demo?谢谢
那在二,三,四级域名下可以互访session值吗?
还有再问下不同域名下能实现互访吗?

------解决方案--------------------
你配多个数据源,把多项目放在一个项目下配置不就可以了,共享SESSION
------解决方案--------------------
把一个应用程序的session放到ServletContext中,这样另外一个应用程序就可以从ServletContext中取得前一个应用程序的引用。示例代码如下, 
应用程序A
context.setAttribute("appA", session); 
应用程序B
contextA = context.getContext("/appA");
HttpSession sessionA = (HttpSession)contextA.getAttribute("appA"); 

对于tomcat 
首先要设定允许crossContext="true"。 
server.xml 
<Context path="/appA" docBase="/appA" debug="0" reloadable="true" crossContext="true"/> 

<Context path="/appB" docBase="/appB" debug="0" reloadable="true" crossContext="true"/> 

然后用ServletContext.getContext(String uriPath)取得另外一个WebApp的Context。 

但是这里面有个问题,因为每个WebApp的Classload是单独不共用的,这样在从Session里面取出来每个自定义的对象时,会出现ClassCastExcept。 
解决办法 

1,把这些可能通过Session共享的Class让上级Classloader载入,比如放在ShareLib目录下面。这个最简单。但是因为这个上级classloader载入的,所以如果在这些类里面使用了静态变量共享数据的方式的话,就会出现问题。

2,当取得另外一个WebApp的Session数据时,改变其Classloader为自己Webapp的classLoader。这个处理比较麻烦些,另外只能取得另外一个WebApp的Session数据,无法改变另外一个WebApp的Session数据。
------解决方案--------------------
探讨
引用:
引用:
你配多个数据源,把多项目放在一个项目下配置不就可以了,共享SESSION

万一用点儿用户名密码的东西,大家都共享了?
SESSION和大家有关系么?

------解决方案--------------------
会话sessionid以及用户部分信息写入数据库,写cookie,在cookie中记录sessionid,然后每次读cookie,取出seesionid,然后读数据库,取出用户信息。
------解决方案--------------------
你么说的是SSO 单点登陆 网上资料很多
------解决方案--------------------
单点登陆
------解决方案--------------------
如果是同服务器的运用,8楼的最完整,不同服务器,恩……单点登录
------解决方案--------------------
据说要开源的 sun的产品AM
------解决方案--------------------
单点登录就是解决这个的