分享

关于session共享的问题,求救啊

本帖最后由 pig2 于 2015-7-22 22:23 编辑

1、两个tomcat在同一台机器上、seesion共享成功。(tomcat端口不同)
2、tomcat在不同的机器上,session共享失败。日志如下:
      Jul 23, 2015 5:41:27 AM de.javakaffee.web.msm.MemcachedSessionService requestFinished
      FINE: No session found in session map for 5556F95BE394E00AF2AB3D024AE77A97-n1
      总是找不到session
3、tomcat配置文件context.xml
        <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:192.168.8.20:11211"
                 sticky="false"
                 lockingMode="auto"
                 sessionBackupAsync="false"
                 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                 sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
         />
         所有tomcat的配置都一样、版本都是7.0.54、tomcat在不同机器上的时候、负载不管用nginx、还是lvs都session共享失败。
         系统版本为centos6.5、放火强都已经关闭。
4、求大神给小弟分析下、这是什么原因造成。小弟不胜感激。
1.jpg

已有(3)人评论

跳转到指定楼层
lyk20042810 发表于 2015-7-22 23:31:32
回复

使用道具 举报

arsenduan 发表于 2015-7-22 22:32:13
这个其实就是session共享失败了。网上资料很多的。

下面仅供参考

但我们在管理这些项目时,只有一个登陆口,然后在其他项目取session来实现身份的验证。

1、配置tomcat下 conf/server.xml文件,在<Host></Hoser>配置如下:

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

    <!-- aa 和bb 为两个不同的web项目  -->

     <Context path="/aa"  reloadable="true" crossContext="true" />
    <Context path="/bb"  reloadable="true" crossContext="true"/>

      </Host>

2、 在 aa项目存入session

     session.setAttribute("user",new Date().toString()+"weiqingli");
    ServletContext ContextA =session.getServletContext();
    ContextA.setAttribute("session", session);

3、在bb 项目取出 session

    HttpSession session1 =request.getSession();   
       ServletContext Context = session1.getServletContext();   
       ServletContext Context1= Context.getContext("/aa");     
        if(Context1 !=null && !Context1.equals("")){      
            HttpSession sess =(HttpSession)Context1.getAttribute("session");
            out.println(sess.getAttribute("user"));
        }

大家可能很容易看得出这个是单向传的session,其实要实现双向,将上面的程序反写就可以实现从bb存入,aa取出了。


回复

使用道具 举报

lyk20042810 发表于 2015-7-22 23:28:02
arsenduan 发表于 2015-7-22 22:32
这个其实就是session共享失败了。网上资料很多的。

下面仅供参考

感谢你的回答。这也是一种思路。对我们公司不太适用。再次表示感谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条