关于tomcat中session 现在在TOMCAT的日志中发现了这样两个异常java.io.NotSerializableException,java.io.WriteAbortedException:小弟找了下关于这方面的文章,多数是说因为session不能被序列化,现在我想不改程序而通过配置文件解决这两个异常有没有办法?小弟用的是tomcat4.1还请路过的大狭们给点意见,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以通过改配置让 tomcat 不要对 session 做 persistence,也就不会报那个错了。但这样做的缺点是,当 tomcat 重启的时候,原来的 session 就都失效了。 没问题,TOMCAT重起的时候session失效对我来说没有影响,那该如何配置TOMCAT的,还请楼上的大狭详细的指点下 改tomcat配置, 让session可以持久化. 1.给需要保存到Session中的对象类实现Serializable接口2.不用session别无他法 这个是编译JSP文件时候抛出的错误和TOMCAT配置不搭介 大体上是下面的样子,具体的看文档吧:<Context path="" ...> <Manager pathname="" /></Context> 不改程序也就能设置session时间 小弟看到了这样一段文章还请各位看看,真的有点搞不清楚到底能不能通过配置文件解决了Session的管理当一个sesson开始时,Servlet容器会创建一个HttpSession对象,在某些情况下把这些Httpsession对象从内存中转移到文件系统中或数据库中,需要访问的时候在把它们载入到内存中来。这样做的好处有两点:节约了内存的消耗,当web服务器产生故障时,还可以从文件系统或数据库中恢复Session的数据。对于Session的管理,小猫提供了两个实现类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager。StandardManager -是默认的方法,当Tomcat服务器重启或重载的时候,会把Session对象保存到<%CATALINA_HOME%>/work/Catalina/honstname/applicatonname/SESSIONS.ser(默认值)文件中,每个对象对应一个文件,以Session ID为文件名,例如:<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true"> <Manager className="org.apache.catalina.session.StandardManager" debug="0" maxActiveSessions="-1" checkInterval="60" /></Context>参数说明:checkInterval-检查session是否过期的时间间隔,以秒为单位,缺省值是60秒;maxActiveSessions-可处于活动状态的session数。PersistentManager -提供了更加灵活的管理方式,具有容错能力,可以及时把Session备份到Session Store中,可以控制内存中Session的数量。小猫还提供了实现持久化Session Store的接口,org.apache.catalina.Store,目前提供了两个具体实现类:org.apache.catalina.FileStore和org.apache.catalina.JDBCStore。server.xml中的配置File Store -<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true"> <Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1" > <Store className="org.apache.catalina.session.FileStore" directory="mydir"/> </Manager></Context>参数说明:saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;maxActiveSessions-可处于活动状态的session数;minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制) 怎么了?楼主还没解决吗?你不就是想让你的 Tomcat 不要把 session 做持久化吗?我的程序就是这么做的,是可以的:<Context ...> <Manager pathname="" /></Context> <Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="false" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1" distributable="false"> <Store className="org.apache.catalina.session.FileStore"/> </Manager>我是这么写的,可是不行呀,还请帮我看看是那里不对 肯定是session里有一个对象的class没有实现Serialable这个接口。才会出这个问题的。 我session里的类都没有实现Serialable这个接口,就是想通过配置文件来实现这个接口的功能 我告诉你的方法是要“禁止 Tomcat 对 session 进行持久化”。如果你是想“通过配置的方法来让 session 里的东西都能实现 Serialable 接口,从而能够顺利地进行持久化”,这恐怕是没有办法的。 请教 java核心技术 高级特性中的一段代码 【向火龙果、大胡子、宝哥等高手提问】一次性创建多个根文件夹 CastException异常 麻烦大家给我几个关于GUI的习题 最好带上答案的谢谢 Process对象里面的getInputStream(),getOutputStream()是用来做什么的? 清哪位高手帮我调试一段java代码 java连access的问题? 技术探讨:代码表维护解决方案! 为何系统找不到java.mail.呢? 高手过来,帮个忙! 请教一个问题 可以动态增加的panel,panel中有好几个组件,请问如何取他们的值?
2.不用session别无他法
<Manager pathname="" />
</Context>
Session的管理
当一个sesson开始时,Servlet容器会创建一个HttpSession对象,在某些情况下把这些Httpsession对象从内存中转移到文件系统中或数据库中,需要访问的时候在把它们载入到内存中来。这样做的好处有两点:节约了内存的消耗,当web服务器产生故障时,还可以从文件系统或数据库中恢复Session的数据。
对于Session的管理,小猫提供了两个实现类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager。
StandardManager -是默认的方法,当Tomcat服务器重启或重载的时候,会把Session对象保存到
<%CATALINA_HOME%>/work/Catalina/honstname/applicatonname/SESSIONS.ser(默认值)文件中,每个对象对应一个文件,以Session ID为文件名,例如:<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true">
<Manager className="org.apache.catalina.session.StandardManager" debug="0"
maxActiveSessions="-1" checkInterval="60" />
</Context>
参数说明:checkInterval-检查session是否过期的时间间隔,以秒为单位,缺省值是60秒;
maxActiveSessions-可处于活动状态的session数。PersistentManager -提供了更加灵活的管理方式,具有容错能力,可以及时把Session备份到Session Store中,可以控制内存中Session的数量。
小猫还提供了实现持久化Session Store的接口,org.apache.catalina.Store,目前提供了两个具体实现类:org.apache.catalina.FileStore和org.apache.catalina.JDBCStore。
server.xml中的配置File Store -<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true">
<Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true"
maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1" >
<Store className="org.apache.catalina.session.FileStore" directory="mydir"/>
</Manager>
</Context>
参数说明:saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;
maxActiveSessions-可处于活动状态的session数;
minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;
maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)
<Context ...>
<Manager pathname="" />
</Context>
debug="0"
saveOnRestart="false"
maxActiveSessions="-1"
minIdleSwap="-1"
maxIdleSwap="-1"
maxIdleBackup="-1"
distributable="false">
<Store className="org.apache.catalina.session.FileStore"/>
</Manager>
我是这么写的,可是不行呀,还请帮我看看是那里不对