`

java.io.NotSerializableException错误原因及解决方法

 
阅读更多

运行tomcat下面的 ssh项目,启动,打开某页面(让session起作用),停止;再启动,有可能会报类似如下的错误:

org.apache.catalina.session.StandardManager doLoad

严重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxxx

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxxx

 org.apache.catalina.session.StandardManager start

严重: Exception loading sessions from persistent storage

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxx
原因是:tomcat停止时,保存session资源,然后在重启服务后,会尝试恢复session。

 

解决办法一:

配置tomcat在关闭的时候就不去保存session资源。

在server.xml中Context下添加如下的内容:

 

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>

 

再进行启动停止等操作,报如下的类似错误:

org.apache.catalina.session.PersistentManagerBase start 

严重: No Store configured, persistence disabled

解决办法:

修改刚才添加的 <Context>中<Manager> 元素:

 

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>

 

改为:

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">
    <Store className="org.apache.catalina.session.FileStore"/>
</Manager>

 

解决办法二:

将那些需要放在session的类进行序列化。也就是让类实现接口java.io.Serializable即可。

 

在一些类里面调用了其它的类,而调用的类实现了序列化接口,但其它类没有实现,会出现这样的情况,解决的办法是让你调用的类继承你用的那个类,或者调用的那个类也实现序列化接口!
PS:如果父类实现了序列化接口,那么子类无需实现序列化接口父类也可以成功序列化!

分享到:
评论

相关推荐

    java 中序列化NotSerializableException问题解决办法

    Java 中序列化 NotSerializableException 问题解决办法 Java 中序列化 NotSerializableException 问题是 Java 开发中常见的问题之一。 NotSerializableException 是 Java 中的一个异常,它发生在尝试序列化一个不...

    7.7初始mybatis个人笔记.docx

    在【描述】中提到的问题,当你尝试启用二级缓存时,如果实体类没有实现`Serializable`接口,MyBatis在尝试序列化对象存储到缓存时会抛出`java.io.NotSerializableException`。这是因为Java的序列化机制要求可序列化...

    java session

    java.io.NotSerializableException: xxxxxx ``` 3. **解决方法** - **方法一**: 配置Tomcat不在关闭时保存Session数据。 在`server.xml`文件中的`&lt;Context&gt;`标签下添加以下内容: ```xml ...

    OCJP题库JAVA考试

    在题目中,由于`Tree`类没有实现`Serializable`接口,所以在尝试序列化`Forest`实例时,会抛出`java.io.NotSerializableException`。 2. **对象的序列化与反序列化**:在问题2中,正确的序列化和反序列化代码是选项...

    Java中常见的异常以及解决方案

    ### Java中常见的异常及其解决方案 ...这些异常在Java开发中非常常见,理解它们的原因和解决方法对于编写健壮的应用程序至关重要。通过适当的预防措施和错误处理,可以有效地避免这些异常的发生。

    关于Java对象序列化您不知道的5件事Java开发Java

    Java对象序列化是Java开发中...了解以上知识点后,Java开发者能更好地理解和运用对象序列化,解决实际开发中遇到的问题,提升代码的质量和安全性。在日常编程中,适时地利用序列化可以显著提高程序的灵活性和可维护性。

    SCJP 310-055 题库5 输入输出流

    在比较`java.io.BufferedWriter`和`java.io.FileWriter`时,题目询问哪一个功能仅存在于其中一个类中。选项E指出写入行分隔符到流是`BufferedWriter`独有的功能,这是正确的。`BufferedWriter`提供了一个`newLine()`...

    SCJP 题库

    对于问题3和4,具体的错误原因没有在描述中给出,但通常可能是由于语法错误、类型不匹配或者调用不存在的方法等原因造成的。 ### 4. 文件操作与日期格式化 在问题4中还提到了`DateFormat`类的使用,该类提供了日期...

    jboss4.0.5-GA在使用RMI时的大坑

    4. **序列化问题**:RMI依赖于对象的序列化和反序列化,如果调用的对象未实现`java.io.Serializable`接口,会导致`NotSerializableException`。 5. **死锁和线程问题**:RMI调用可能涉及到多线程,如果线程管理不当...

    IO.Files.Sezialization-task2

    在Java编程语言中,IO(Input/Output)和序列化是两个重要的概念,它们在处理数据存储、数据传输以及对象状态持久化等方面发挥着关键作用。在这个名为"IO.Files.Sezialization-task2"的任务中,我们将深入探讨这两个...

    SCJP 310-055 2008-01-07题库

    import java.io.*; public class Forest implements Serializable { private Tree tree = new Tree(); public static void main(String[] args) { Forest f = new Forest(); try { FileOutputStream fs = ...

    SCJP认证考试题库1.pdf

    - **问题4**:由于`DateFormat`没有`setLocale`方法,且`Local.Ialy`应为`Locale.ITALY`,代码存在编译错误,因此答案是D。 - **问题5**:未提供的问题5内容不完整,但通常涉及`FileInputStream`或`FileOutputStream...

Global site tag (gtag.js) - Google Analytics