java.io.NotSerializableException и реализация Serializable - PullRequest
4 голосов
/ 08 ноября 2011

Я сталкиваюсь с этим исключением из-за своего кода и не совсем уверен, как его исправить.Я использую Apache Tomcat v6.0.Я считаю, что класс "TransactionStorage" должен реализовывать Serializable, но как мне это сделать?

"WARNING: Cannot serialize session attribute sortedList for session 4A5378C83A44BC037B0F1985EAC8DD31
java.io.NotSerializableException: com.middleware.hts.TransactionStorage
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
    at java.util.ArrayList.writeObject(ArrayList.java:569)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
    at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1572)
    at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1015)
    at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:528)
    at org.apache.catalina.session.StandardManager.unload(StandardManager.java:469)
    at org.apache.catalina.session.StandardManager.stop(StandardManager.java:678)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4882)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3454)
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1361)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
    at java.lang.Thread.run(Thread.java:595)

Класс TransactionStorage в настоящее время выглядит так:

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011
java.io.NotSerializableException: com.middleware.hts.TransactionStorage

Необходимо изменить

public class TransactionStorage implements Comparable<TransactionStorage>{

на

public class TransactionStorage implements Comparable<TransactionStorage>, Serializable {

, где Serializable равно java.io.Serializable

2 голосов
/ 08 ноября 2011

Похоже, что вы не сможете, если у вас нет доступа, чтобы изменить этот класс.Если вы делаете, отлично.Если вы этого не сделаете, вам придется написать класс-оболочку, который соответствующим образом переопределяет следующие методы.

 private void writeObject(java.io.ObjectOutputStream out) throws IOException
 private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...