`

同IP不同端口Session冲突问题

阅读更多

一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来都是cookie惹的祸,它不会区分端口,造成这多个站点不断的后来的覆盖前面的,从而造成session的丢失。

        解决方法:

方法1:将不同的多个应用服务在不同的虚拟主机中,或者映射不同的IP进行部署。

方法2:对应tomcat服务处理方式:修改coocie的名称保证cookie不重复,即jsessionid的不重称,保证ip相同下sessioncookiename域名不同。

           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修改方法相同

       tomcat增加参数对所有Context生效,影响甚大,所以到以后的版本可以就仅针对Context设置了

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

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

          3 、weblogic修改方法

          设置各个应用使用不同的cookie-name。

         weblogic的设置(设置不同的cookie-name):

         请在WEB-INF\Weblogic.xml添加如下代码

                  <session-descriptor>       

                             <cookie-name>JSESSIONID1</cookie-name>   

                  </session-descriptor>  

 

http://blog.csdn.net/isshquery/article/details/8493231

http://blog.163.com/wendy_xiaoyue/blog/static/19040105120111114105829574/

 

 本文来源于:http://my.oschina.net/psuyun/blog/520224

 

 

相似问题:

 

0

一台机器,两个web项目,session丢失问题20

  问题描述: 有两个web项目,一个是webwork+spring+hibernate 结构,一个是zk+javabean+hibernate结构。 把两个项目布置在一台机器是时(不同tomcat,不同端口)。用浏览器登录一个项目地址后,再打开另外一个项目, 前面的哪个项目session会丢失 
    通过检查cookie,发现这两个项目的sessionid是同一个,当打开第二个项目的时候,其sessionid被修改了。  
 
 
 

采纳的答案

估计你两个项目的访问域名是一样的。这样的问题在不同的浏览窗口中应该是不存在的 
在同一浏览器窗口中,输入域名相同,但是目录不同的服务时。如果两个服务是互不关联的,应该在访问域名时针对不同服务使用不同的域名。 
或者你的cookie应该是针对域下的某个特定目录的,而不是域的根目录。 

在tomcat中,jessionid应该是默认写在域根目录下的。 

 

 

下面的sso可以关注一下:

应该是单点登录问题,你可以查一下这方面的知识(SSO),它就是解决多web程序共用一个的登录的问题!

本文来源于:http://www.iteye.com/problems/43002

分享到:
评论

相关推荐

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

    经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的...

    tomcat5 session 复制

    【Tomcat5 Session 复制详解】 在分布式环境中,保持用户会话(Session)的一致性是至关重要的。...配置过程中需注意端口冲突、网络可达性以及正确设置复制策略,以达到高效且稳定的 Session 同步效果。

    NAT 端口映射全攻略

    虽然NAT端口映射带来了诸多便利,但也存在一些问题,如端口冲突、端口耗尽、NAT穿透(NAT Traversal)困难等。为了解决这些问题,出现了UPnP(Universal Plug and Play)和STUN(Session Traversal Utilities for ...

    修改SQL_Server_2000的端口号.doc

    在SQL Server 2000中,数据库引擎默认监听1433端口进行TCP/IP通信。有时出于安全考虑或避免与其他服务冲突,我们需要修改这个端口号。本篇文档将详细讲解如何更改SQL Server 2000的端口号。 **一、了解SQL Server ...

    IP网络基础知识

    虽然冲突是正常的,但如果冲突过于频繁,则可能表明网络存在问题,需要进行优化。 #### 二、网络的演进与分类 计算机网络的发展经历了从低速串行联接到高速网络的过程。随着技术的进步,网络形态也在不断变化。 #...

    F5配置手册(内部)

    - 主机名的确定是必要的,需确保双机环境下的主机名不同,避免冲突。 **1.1.2 VLAN划分** - 根据网络组网模式,F5上需要划分3个VLAN,分别为External-vlan、Internal-vlan和Failover-vlan。 - **External-vlan:...

    关于集群 cook 覆盖问题 及解决方法

    WebLogic Server中,两个不同域的应用之间可能存在Session冲突,这通常由于Cookie的覆盖机制所引起。本文将详细解析这个问题的现象、原因以及提供解决方案。 **一、现象分析** 当用户在一个域(例如,域A的9000端口...

    Apache+Tomcat集群和负载均衡及Session绑定

    可能的原因包括网络问题、端口冲突、Tomcat未启动或配置错误。解决方法包括检查网络连接、确认Tomcat服务器的AJP端口是否开放以及验证JK2配置的正确性。 ### 5. Session绑定 在集群环境中,Session数据需要在所有...

    windows下Nginx+memcached+Tomcat集群配置实现session共享与负载均衡

    4. **测试session共享**:创建一个简单的`demo.jsp`页面,放在每个Tomcat的webapps根目录下,通过页面间的跳转来验证session数据是否能在不同Tomcat实例间正确传递。 **三、配置Nginx作为反向代理和负载均衡器** 1...

    深入理解Service1

    Service的`sessionAffinity`属性允许配置客户端IP的会话亲和性,例如设置为`ClientIP`,意味着来自同一客户端IP的请求会被转发到同一个后端Pod,有助于保持会话状态。 6. **负载均衡** Kubernetes的Service支持...

    通过Nginx搭建Tomcat9集群并实现Session共享

    同时,为了防止端口冲突,每个`Tomcat`实例的`port`和`AJP port`应该不同。 接下来,我们转向`Nginx`的配置。`Nginx`作为反向代理服务器,负责接收客户端请求并分发到后端的`Tomcat`实例。在`nginx.conf`文件中,你...

    orcle使用中经常遇到的问题及解决办法

    修改Oracle端口主要是指改变Oracle监听器使用的TCP/IP端口,这在服务器安全策略或端口冲突时非常必要。在`listener.ora`文件中,修改LISTENER配置项的PORT参数,然后重启监听器即可。同时,也要确保防火墙规则允许新...

    Tomcat Nginx Redis实现session共享过程图解

    - **端口配置**: 多台Tomcat需设置不同的端口号,避免冲突。 - **jar包放置**: 将jar包放入Tomcat的`lib`目录下,以便Tomcat能加载这些库。 - **服务器配置**: 修改`server.xml`和`context.xml`,配置session ...

    远程桌面登录局域网内机器的配置方法归纳.pdf

    接着,对于数据传输,如果你使用了wtsftp,可能需要确保它使用的端口与远程桌面的默认端口3389不同,因为同时使用可能会导致冲突。如果你在局域网内,可以通过路由器的端口映射功能将内网的3389端口映射到公网IP,...

    nginx+tomcat实现负载均衡,使用redis session共享

    在`conf/server.xml`文件中,修改各个Tomcat实例的端口配置,避免端口冲突。 4. **Session共享**: 当用户在集群中的不同Tomcat实例之间跳转时,需要保持Session的一致性。这里采用Redis作为Session存储。首先,...

    RadvisionIVIEW会议管理系统使用手册PPT课件.pptx

    如与SDS(Session Director Service)或ECS(Endpoint Control System)一同安装在同一服务器上,则需选择其他端口以避免冲突。此外,管理员的邮箱设置信息是可选的,但若要启用邮件通知提醒功能,则必须提供。 在...

    PhoenixPhoneWindowsForOEM

    更改非默认端口可能是为了安全考虑,避免了标准端口被攻击的可能性,或者是为了避开网络中的潜在冲突。同时,这也意味着用户或者系统管理员需要知道新的端口号以进行正确的配置。 "无法完成呼叫的问题",这个问题...

Global site tag (gtag.js) - Google Analytics