今天早上突然出现网页显示错误,察看log文件发现如下错误信息:
Session contains objects whose class definition isn't available.
Remember to require the classes for all objects kept in the session.
首先简单介绍一下这个网站的结构:
网站架构: Ruby/Rails
部署平台: Apache2
分析原因:
网站有多个Controller, 其中一个Controller Require了一个类,new了一个对象然后将这个对象保存到Session里面,然后我跳转到另一个Controller的页面,在这个Controller中没有Require这个类,在页面中的JavaScript代码会通过Ajax定时不断调用Controller的一个方法,这个时候页面显示还一切正常,但是今天早上Apache强制所有的fcgi process重新启动,这个时候错误就发生了,因为没有Require那个类,但Session文件并没有变化(因为对浏览器而言还是同一个Session),所以一旦尝试载入Session文件就报上述错误并返回错误页面。
解决方案:
将对这个类的Require代码从一个特定的Controller移到所有Controller的父类文件application.rb。
收获:
经过这次调试发现原来Rails的Session文件实际采用的是Marshal库。如果你想直接察看Session中的内容,可以参照以下方式:
irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'initializer'
=> true
irb(main):004:0> session = Marshal.load(File.open('tmp/sessions/ruby_sess.01f1a5de37e91f4c'))
分享到:
相关推荐
本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关策略。 首先,让我们理解什么是跨域。跨域是指由于浏览器的同源策略限制,不同域名、协议或端口之间的页面无法直接通信...
然而,随着网站规模的扩大和用户数量的增长,Session管理可能会遇到一系列问题。本文将探讨这些问题,并提供相应的解决方案。 一、Session超时问题 在ASP.NET中,Session默认会在20分钟后过期。如果用户长时间无...
标题"解决session不同问题所需jar包"指出了这个问题的关键:我们需要一个特定的jar包来解决Session同步的问题。这个jar包可能是实现了Session共享或复制的解决方案,例如使用粘性会话(Sticky Sessions)或者Session...
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
除了修改配置,还可以通过编程方式解决这个问题,例如在关键页面手动更新session,或者使用AJAX定时向服务器发送请求来保持session活跃。 在提供的文件列表中,我们看到几个Java文件,这可能意味着在与phpcms交互时...
在Web.Config文件中配置`sessionState`元素,设置`mode`属性为`StateServer`,并指定`stateConnectionString`,这使得Session数据不在本地存储,而是通过TCP/IP连接到一个独立的State Server服务,从而避免了由于...
tomcat集群使用redis解决session共享问题,压缩包包含redisclient-win32.x86.2.0客户端、Redis-x64-3.2.100服务、tomcat-redis-session以及部署安装文档
分布式解决session共享方案一,可参考
本篇将深入探讨如何在Tomcat8的集群环境中使用memcache来解决session共享的问题。 首先,让我们理解什么是session。Session是Web应用程序用来跟踪用户状态的一种机制,它存储在服务器端,通常包含了用户的登录信息...
Asp.net解决session丢失问题的两种方案,以及session丢失的原因。参考一些网上资料,自己总结出来解决方案,顺便附带两个测试案例。还有不清楚的请联系我QQ:394023002 附加信息:周
在Ubuntu操作系统中,用户可以根据个人偏好自定义登录时的Session...在遇到问题时,保持冷静,多尝试搜索解决方案,因为很多问题都有现成的解决办法。通过不断学习和实践,你将能够更好地掌握Ubuntu系统的个性化设置。
现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不
这个项目的核心目的是演示如何通过Redis来解决Session共享的问题,以实现在多服务器环境下的用户会话一致性。下面我们将深入探讨其中涉及的技术和知识点。 1. **SpringMVC**:作为Spring框架的一部分,SpringMVC是...
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发“session回收”。接下来通过本文给大家介绍关于PHP中Session文件过多的问题及session文件保存位置,需要的朋友参考下
ASP.NET Session 丢失通常是由多种原因引起的,包括进程重启、Session超时、配置文件更改、应用程序更新或杀毒软件活动。在深入探讨解决方案之前,让我们先理解Session的基本原理。 Session是一种服务器端的状态...
CASClient 集群环境的 Session 问题及解决方案 本文将详细介绍 CASClient 集群环境中的 Session 问题及解决方案。CASClient 是一种开源的单点登录系统,能够提供统一的登录和注销机制。但是在集群环境中应用 CAS...
在了解如何解决Session丢失的问题之前,首先需要了解Session的工作原理。Session是一种服务器端技术,用于跟踪用户的交互行为。在用户与网站交互的过程中,服务器会为每个用户提供一个唯一的SessionID,并通过Cookie...
为了解决这个问题,Vista及后续版本的Windows将服务单独隔离到Session 0,而用户应用程序则运行在独立的Session中,提高了系统的安全性。 当尝试让服务与桌面进行交互时,如在服务启动时弹出对话框,会发现由于...
在分布式系统中,Session共享是一个常见的需求,尤其...这个方案不仅解决了分布式环境下的Session一致性问题,还提供了可扩展性和高可用性。在实际开发中,结合合理的配置和监控,可以大大提高系统的稳定性和用户体验。
"浏览器多窗口共用session引发的混乱"这个标题揭示了一个常见但往往被忽视的问题,即当用户在同一浏览器的不同窗口或标签页中打开同一个网站时,它们可能会共享同一份Session数据...