2011-12-08 8 views
2

私はtomcat6をUbuntuサーバーで使用しています。 3つのGrails 1.3.7アプリケーションを配備しました。これらのアプリケーションはすべて、自分のドメインクラスを含むプラグインを使用しています。Tomcat6上で動作するGrailsアプリケーションによってNotSerializableExceptionがスローされました

tomcat6の再起動後にこの例外が発生します。 IOExceptionの原因は何ですか?私はGroovyドメインクラスでSerializableインターフェイスを実装しようとする可能性があります...しかし、私はそれが本当に必要ではないと思います。ここで

は例外スタックトレースです:

SEVERE: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.example.User 
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.example.User 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479) 
     at com.vaadin.event.ListenerMethod.readObject(ListenerMethod.java:110) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.HashSet.readObject(HashSet.java:291) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.HashMap.readObject(HashMap.java:1030) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.LinkedList.readObject(LinkedList.java:964) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479) 
     at com.vaadin.event.ListenerMethod.readObject(ListenerMethod.java:110) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.HashSet.readObject(HashSet.java:291) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.Hashtable.readObject(Hashtable.java:859) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at java.util.HashMap.readObject(HashMap.java:1029) 
     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:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
     at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1475) 
     at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:977) 
     at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:394) 
     at org.apache.catalina.session.StandardManager.load(StandardManager.java:321) 
     at org.apache.catalina.session.StandardManager.start(StandardManager.java:643) 
     at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:438) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4559) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) 
     at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
     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:597) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

これは、Userクラスがどのように見えるかです:

class User { 
    String name 
    Profile profile 
    static belongsTo = [profile : Profile] 
    static constraints = { 
    } 
} 

答えて

5

ある時点で、HttpSessionオブジェクトにUserのインスタンスを格納しています。 Tomcatはセッションをディスクに保存するように設定されています(このようにして、セッションはサーバーの再起動後も存続できます)。考えられる解決策:

  1. Tomcatのnot to persist the sessions.
  2. を知らせるには、ユーザー(とそのすべてのメンバーが)Serializableを実装していることを確認してください。
  3. セッションオブジェクトにユーザーを格納しないでください。
3

はい、あなたはSerializableを実装するようUserをマークする必要があります。私には理由がないとは思わない。 ProfileもSerializableであることを確認するだけです。

これは、単純なWebサーバー/アプリケーションである必要はありません。しかし、サーバが実行中のメモリの外でセッション状態を保存する必要がある場合(たとえば、データベースやクラスタ化されたサーバの間など)、Sessionに格納されるものはすべて直列化可能でなければなりません。

関連する問題