`
chenzng
  • 浏览: 14215 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

应用的Session冲突

 
阅读更多

3)Tomcat的设置(设置不同JSESSIONID的path)

修改tomcat/conf/server.xml: 

 

1.tomcat5修改方法

在启动项中增加org.apache.catalina.SESSION_COOKIE_NAME参数

linux
JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘

win
set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“

2.tomcat6和tomcat7修改方法相同

在Context容器标签上增加sessionCookieName参数

<Context path=”/” docBase=”webapp” reloadable=”false” sessionCookieName=”yoursessionname”></Context>

还可以加上sessionCookiePath

<Context ... sessionCookiePath="/" > ... </Context>

延伸阅读:tomcat修改jsessionid在cookie中的名称 http://blog.shilimin.com/338.htm

 

 

-------------------------------------

       tomcat服务端和客户端通过sessionCookieName参数(默认值:jsessionid)的值来识别session,并在此session中共享数据。在浏览器首次请求服务的时候,tomcat服务器会在响应头信息JSESSIONID和PATH信息,告诉浏览器在PATH下保存cookie名为JSESSIONID的cookie,当然此时为会话cookie,此cookie是保存在浏览器当前会话中的。

      在下次浏览器请求的时候会将此cookie值返回给服务器,当然cookie的名称同(sessionCookieName参数,确切的来说是同浏览器保存的会话cookie的名称),当服务器接受到此参数的时候,就不会在响应头信息信息里面返回Set-cookie。

      当我们在同一台服务器(统一IP出口也是如此)上部署两个应用时,一般情况JSESSIONID和PATH都是默认值,所以容易导致session冲突。当一个应用登录时,会覆盖另一个应用的JSONSEIONID和PATH,导致session回话结束。解决方法一般有几种:

    

      1、设置不同的ContextPath,通过路径来区分不同PATH下的JSESSIONID

 

            访问路径比较长,不便于记忆,应用都想通过根目录直接访问时不适用。

 

      2、在应用中直接设置SESSION_COOKIE_NAME,修改JSESSIONID;

 

            System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "jss");

            这种方式在代码中写死,不够灵活

        

      3、通过设置JAVA_OPTS参数-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname

 

           linux

           JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘

           win

           set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“

           

      4、在Context容器标签上增加sessionCookieName参数

 

          <Context path=”/” docBase=”webapp” reloadable=”false” sessionCookieName=”yoursessionname”></Context>

     

      推荐使用3、4的设置方式

 

       尝试在context.xml中,<Context>根标签设置 sessionCookieName="jss"也可以解决

分享到:
评论

相关推荐

    报表session与应用session常识普及

    系统session通常用于存放共享信息,例如用户请求和应用状态等,而报表session则存放与报表相关的访问信息,比如报表模板的访问情况等。 FineReport是一种报表开发工具,它在Web应用中的session处理机制与传统Web...

    一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法

    一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...

    使用terracotta实现session共享的证实实验

    对于Java应用程序而言,Terracotta可以实现在多台服务器之间共享数据,尤其是Session数据,从而解决了分布式环境下Session共享的问题。 #### Session共享的重要性 在分布式系统中,Session共享变得尤为重要,因为...

    Spring Session + redis实现session共享

    6. **处理冲突**:由于多服务器可能同时修改同一session,需要处理可能出现的并发冲突。Spring Session默认提供了乐观锁机制,通过session数据的版本号来解决。 7. **安全考虑**:使用Redis存储session数据时,需要...

    Maven3应用入门session

    **Maven3应用入门Session** 在软件开发领域,Maven是一个强大的项目管理和综合工具,尤其在Java开发中占据着核心地位。Maven3是Maven系列的第三个主要版本,它在Maven2的基础上进行了改进,提供了更高效、更稳定、...

    验证码的session问题

    2. **Session冲突**:在同一台服务器上,如果多个用户同时使用相同的Session ID,可能会导致验证码混淆,这需要服务器确保每个Session ID的唯一性。 3. **Session丢失**:如果用户禁用了Cookie或者在某些隐私模式下...

    session.rar

    4. **Session管理**:如何处理多个并发用户,避免Session冲突,以及在服务器集群中的Session复制和共享策略。 5. **Session与Cookie的区别**:解释了Cookie是存储在客户端,而Session存储在服务器端,以及两者在...

    tomcat redis session.rar

    :“Tomcat集群Nginx使用Redis保证Session同步”这一场景中,通常是因为在多台Tomcat服务器组成的集群中,每个服务器各自维护独立的Session,当用户在集群中的不同服务器之间切换时,可能会导致Session丢失或冲突。...

    tomcat7集群实现session共享

    - **冲突解决**:在多服务器环境下,可能会出现同时修改同一session的情况,需要有策略来处理这些冲突。 - **session超时**:确保集群中的所有服务器对session超时设置保持一致,避免用户在集群中的不同服务器之间...

    关于session丢失问题

    开发人员应遵循最佳实践,例如在处理完特定操作后及时清理不再需要的Session,避免 Session 冲突。 6. **安全措施**:有些安全设置,如反跨站请求伪造(CSRF)的Token更新,可能会导致Session被清除。在设计系统时...

    网页session的一些常见问题并解决方案

    在多用户环境下,若Session ID生成策略不够安全,可能导致Session冲突,即不同用户间的数据互相混淆。解决方法是使用更安全的Session ID生成机制,如结合用户IP和时间戳,确保每个Session ID的独特性。同时,注意...

    zookeeper实现分布式session sample

    - 必要时,需要对session的读写操作进行同步控制,防止数据冲突。 通过以上讲解,我们可以看到Zookeeper在分布式session管理中的作用,它提供了一种高效、可靠的解决方案,使得用户在分布式系统中能够享受到无缝的...

    浏览器多窗口共用session引发的混乱

    6. **最佳实践**:在设计Web应用时,应考虑到多窗口使用场景,避免不必要的数据冲突,提供清晰的用户交互提示。 7. **测试与调试**:开发者需要进行多窗口并发测试,以发现和修复可能出现的混乱情况。 通过理解...

    session过期问题

    4. **并发访问问题**:同一用户在多个设备或浏览器窗口同时登录,可能导致Session冲突,需考虑并发访问下的Session管理。 5. **安全防护**:防止Session Hijacking(会话劫持)和Session Fixation(会话固定)攻击...

    redis实现session一致性的Lib

    - **负载均衡**:负载均衡器可以根据需求将请求分配给任何服务器,无需担心session丢失或冲突。 - **性能优化**:Redis作为内存数据库,读写速度远快于传统的硬盘存储,提升了session操作的效率。 - **跨域共享**...

    tomcat5 session 复制

    在 `conf/web.xml` 文件中,需要为每个需要复制 Session 的 Web 应用添加 `&lt;distributable&gt;` 标签,表明该应用支持 Session 复制。这通常添加在 `&lt;web-app&gt;` 标签的末尾。 9. **启动和监控** 配置完成后,重启...

    session 作用域

    4. **session共享问题**:同一用户在多个浏览器窗口或设备上同时登录,可能会出现session共享的问题,需要合理设计以避免数据冲突。 文件"web_gt11_0505_session_shopcart"可能是一个更具体的购物车实现,涉及如何...

    oraclev$sessionv$session_wait用途详解

    3. **等待原因**:结合`v$session_wait`与其他视图(如`v$lock`、`v$sqltext`),可以深入分析等待事件的具体原因,例如锁定冲突的根源或慢SQL语句。 ### 使用示例与场景 - **性能调优**:当数据库响应变慢时,...

    jboss session 复制

    在分布式Web应用环境中,JBoss Session复制是一种关键的技术,它允许在多个服务器之间共享用户会话状态,确保用户在切换服务器时不会丢失信息。这里我们将深入探讨JBoss Session复制的工作原理、常见问题以及如何...

    “session已关闭”——解决方案

    整合这些框架时,确保它们对session的处理与服务器配置一致,避免冲突。 解决"session已关闭"的问题,需要结合日志分析、代码审查和服务器配置检查。对于初学者来说,理解session的工作原理和不同框架下的使用方式...

Global site tag (gtag.js) - Google Analytics