最近在把Tomcat下的程序迁移到Weblogic上的时候遇到了问题,我的程序中有一个过滤器,这个过滤器主要用来检查当前用户访问的资源是否需要认证,如果需要认证并且没有认证的话,则跳转到另外一个认证服务器上去做认证,认证通过后,再跳转回当前服务器继续访问请求的资源。这个过滤器在
Tomcat下运行的很正常,但是迁移到Weblogic上的时候就出现页面乱跳转的现象,因为对程序没有做任何改动,所以怀疑是Tomcat和
Weblogic这两个不同的Web容器在处理方式上有差别,于是就在过滤器中加入了一些输出信息,通过观察发现了用户的sessionid在
Weblogic上跳转前后发生了变化,而在Tomcat上跳转前后则不会有任何变化。页面的跳转是通过
response.sendRedirect("xxx.jsp")来实现的,因此怀疑Weblogic在这个方法的处理上跟Tomcat上不同而导致错
误产生(很愚蠢的怀疑,这也导致我在查找问题的方向上出现了错误),一直认为可以通过修改Weblogic的weblogic.xml这个文件来解决,在
网上搜了很多,也在看了一天weblogic的资料,都没有解决。后来无意中发现了一个问题,我如果访问的资源都是本地服务器上的,那么去认证之后就不会报错,如果是其他服务器的(其他服务器也使用同一个认证服务器做认证)则会出现上述问题,对cookie做了进一步的跟踪,发现cookie里面的
jsessionid在访问了其他服务器之后就被修改了,也就是原来的jsessionid不见了。同样的事情,在tomcat上就不会出现(到现在我还
认为是Tomcat和Weblogic的差别)。在Google上搜索了N遍无果之后,在Baidu上终于结果了,有人遇到过跟我相同的问题,这个问题并
不是Tomcat和Weblogic的差别引起的,我在查找问题原因的时候忽略了一个细节,也就是迁移到的Weblogic服务器上,和另外几个服务器
(包括认证服务器)都在同一个IP地址的不同端口下,也就是在同一个域下,而这就是问题的所在。是访问了同一个服务器而导致了jsessionid发生了覆盖(客户端保留一个名为 JSessionID的Cookie),解决方法很简单。
如下:两个web使用不同的sessionid来标识,如第一个web使用jsessionid1,第二个web使用 jsessionid2就可以了。 直接在每个web程序下配置weblogic.xml
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>JSESSIONID1</param-value>
</session-param>
</session-descriptor>
即将第一个web app的session id标识改为jsessionid1,同理将第二个改为jsessionid2,我只是修改了我的服务器上的weblogic,而没有修改其他服务器的,以上问题得到解决了。
同样,这也解释了为什么在最开始的时候我发现jsessionid在Tomcat下不变,而在Weblogic上确改变了的问题。
分享到:
相关推荐
6. **日志分析**:通过查看WebLogic的日志文件,寻找关于session丢失的异常信息,有助于定位问题。 7. **监控和调试**:使用WebLogic的管理工具进行监控,如WLST(WebLogic Scripting Tool)或JMX,以便实时查看...
4. **负载均衡**:在负载均衡的设置下,Session粘滞性是一个重要的概念,确保用户的请求总是被定向到最初创建Session的服务器,以避免Session丢失。 5. **高可用性**:通过配置Session持久化,即使服务器故障,也能...
一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...
然而,当应用部署在多台服务器上时,单个服务器的Session无法在其他服务器之间共享,导致用户在不同服务器之间切换时需要重新登录或者丢失会话数据。为了解决这个问题,我们可以采用外部存储机制来共享Session,如...
Weblogic 10.3 集群配置与Session持久化是企业级应用部署的关键环节,它涉及到多个方面的知识,包括Weblogic的基础概念、集群架构、安装配置以及Session的管理和持久化。 1. **Weblogic集群名词解释** - **Domain*...
使用WebLogic提供的监控工具(如JMX、JConsole或WLST)可以检查Session复制的性能和状态,帮助诊断任何复制问题。 7. **性能与安全考虑**: - **性能**:Session复制会增加网络带宽消耗和服务器资源开销,因此...
6. **热部署问题**:在不中断服务的情况下更新应用可能导致问题,比如session丢失。了解WebLogic的热部署机制,使用适当的部署策略,可以避免这类问题。 7. **集群配置**:对于高可用性和负载均衡,可能需要配置...
同时,代理服务器也可以提供 Session 复制功能,确保用户的 Session 不会因服务器宕机而丢失。 此外,使用 Nginx 等负载均衡工具也可以实现负载均衡和 Session 复制。但是,使用 Weblogic 代理服务器实现负载均衡和...
### WebLogic的11个配置基础问题解析 #### 1. 如何给WebLogic指定大小的内存? 在启动WebLogic的脚本中,通常位于所选域对应的服务器目录下的`startServerName.sh`(Unix/Linux系统)或`startServerName.cmd`...
1. **Session复制**:通过将session数据复制到集群中的其他成员,可以在不丢失数据的情况下提高系统的可用性。 - 配置session复制时,需要确保所有节点之间能够正确地进行数据交换。 - 可以通过WebLogic控制台或...
通过定制Cookie的Name和Path属性,可以有效地避免Session丢失问题。此外,对于同一域内多个应用的情况,同样需要关注Cookie的管理,以防止类似冲突的发生。正确配置和管理Cookie属性对于构建健壮的分布式系统至关...
- **Session复制**:确保用户在集群中的任意节点间切换时,其会话状态保持一致,不丢失数据。 - **故障转移**:当某个服务器出现问题时,客户端请求可以自动转至其他服务器。 - **负载均衡策略**:可以通过多种...
### WebLogic Cluster HTTP会话复制失败的故障...通过深入理解会话复制机制,结合具体的日志信息分析,以及逐一验证网络、配置、数据序列化等多个层面,可以有效定位并解决此类问题,确保WebLogic集群稳定高效运行。
- **集群复制**:对于高可用性的需求,可以在集群内部进行Session数据的复制,即使某个节点故障也不会导致会话丢失。 #### 五、Cookies的作用与限制 Cookies是Session机制中的重要组成部分,用于存储Session ID。...
3. **Session复制**:为了保持会话状态,可以在集群中启用session复制,使得用户在服务器间切换时不会丢失会话信息。 4. **健康检查**:负载均衡器定期对集群中的服务器进行健康检查,只有健康的服务器才能接收新...
通过以上对`httpd.conf`中关于WebLogic设定的关键参数的深入解析,我们不仅理解了每个参数的功能与作用,而且掌握了如何根据具体的应用需求和环境特点进行合理的配置调整,以优化WebLogic与Apache之间的交互效率,...
一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet
- **NO_ACKNOWLEDGE**:不确认消息,消息可能丢失。 理解WebLogic JMS Server的工作原理对于在WebLogic环境中实现可靠的消息传递至关重要。开发者需要根据业务需求选择合适的消息模型、消息类型以及确认模式,以...