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