现在在TOMCAT的日志中发现了这样两个异常java.io.NotSerializableException,java.io.WriteAbortedException:小弟找了下关于这方面的文章,多数是说因为session不能被序列化,现在我想不改程序而通过配置文件解决这两个异常有没有办法?小弟用的是tomcat4.1还请路过的大狭们给点意见,谢谢

解决方案 »

  1.   

    可以通过改配置让 tomcat 不要对 session 做 persistence,也就不会报那个错了。但这样做的缺点是,当 tomcat 重启的时候,原来的 session 就都失效了。
      

  2.   

    没问题,TOMCAT重起的时候session失效对我来说没有影响,那该如何配置TOMCAT的,还请楼上的大狭详细的指点下
      

  3.   

    改tomcat配置, 让session可以持久化.
      

  4.   

    1.给需要保存到Session中的对象类实现Serializable接口
    2.不用session别无他法
      

  5.   

    这个是编译JSP文件时候抛出的错误和TOMCAT配置不搭介
      

  6.   

    大体上是下面的样子,具体的看文档吧:<Context path="" ...>
        <Manager pathname="" />
    </Context>
      

  7.   

    不改程序也就能设置session时间
      

  8.   

    小弟看到了这样一段文章还请各位看看,真的有点搞不清楚到底能不能通过配置文件解决了
    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表示没有限制)
      

  9.   

    怎么了?楼主还没解决吗?你不就是想让你的 Tomcat 不要把 session 做持久化吗?我的程序就是这么做的,是可以的:
    <Context ...>
        <Manager pathname="" />
    </Context>
      

  10.   

    <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>
    我是这么写的,可是不行呀,还请帮我看看是那里不对
      

  11.   

    肯定是session里有一个对象的class没有实现Serialable这个接口。才会出这个问题的。
      

  12.   

    我session里的类都没有实现Serialable这个接口,就是想通过配置文件来实现这个接口的功能
      

  13.   

    我告诉你的方法是要“禁止 Tomcat 对 session 进行持久化”。如果你是想“通过配置的方法来让 session 里的东西都能实现 Serialable 接口,从而能够顺利地进行持久化”,这恐怕是没有办法的。