2013-12-16 21 views
36

the spring petclinic applicationに多くの変更を加えました。サーバー上で実行するよう...私は日食の実行を使用してのTomcatサーバーの新しいインスタンスにアプリケーションを起動した瞬間に、私は次のエラーメッセージを取得しています:永続ストレージからの例外ロードセッション

SEVERE: Exception loading sessions from persistent storage 

その後することができ、サーバとアプリケーション正常に起動しましたが、エラーメッセージの原因を修正したいと思います。誰も私にこのエラーメッセージを回避する方法を教えてもらえますか?

スタックトレースはアプリケーションのファイルをリストしていないため、問題を解決するためにアプリケーションコードをどこで調べるか分かりません。 the petclinic code at githubを見ると、アプリケーションの構造を見ることができます。アプリケーションの構造を見れば、どこに問題があるかを知ることができます。ここでは、スタックトレースは次のとおりです。

INFO EhCacheManagerFactoryBean - Initializing EhCache CacheManager 
INFO ContextLoader - Root WebApplicationContext: initialization completed in 4376 ms 
Dec 16, 2013 2:51:56 PM org.apache.catalina.session.StandardManager doLoad 
SEVERE: IOException while loading persisted sessions: java.io.EOFException 
java.io.EOFException 
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280) 
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749) 
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779) 
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279) 
    at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58) 
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246) 
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:204) 
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Dec 16, 2013 2:51:56 PM org.apache.catalina.session.StandardManager startInternal 
SEVERE: Exception loading sessions from persistent storage 
java.io.EOFException 
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280) 
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749) 
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779) 
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279) 
    at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58) 
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246) 
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:204) 
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Dec 16, 2013 2:51:56 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'petclinic' 
+0

これはehcacheに提供されているものと期待されているものとの間にミスマッチがあると思います。 http://ehcache.org/documentation/integrations/hibernateを見てください。 <プロパティ名= "hibernate.cache.use_query_cache"> true –

+0

変更する部分を変更する場合は、を変更することでこれを無効にすることができます。 true true ' –

答えて

76

これは、Tomcatは、以前のシャットダウン時に保存されていた以前にシリアル化されたWebセッションをロードすることができないと行うことです。これは、Tomcatが正常にシャットダウンしないため、セッションオブジェクトがシリアル化中に破損している可能性があります。

このエラーを解消する1つの方法は、再起動後にセッションの永続性を無効にすることです。これを行うには、ファイルCATALINA_HOME/conf/context.xmlを編集し、<Manager>pathname属性を空の文字列に設定します。これはよくTomcatの7のためのファイルに記載されています

<!-- Uncomment this to disable session persistence across Tomcat restarts --> 

<Manager pathname="" /> 

Tomcatはシャットダウンされながら、あなたはまた、CATALINA_HOME/work/Catalina/localhost/<appName>フォルダから任意の古いsession.serファイルを削除する必要があります。

再起動後のセッションの永続性が必要な場合は、これが受け入れられない場合があります。この場合、問題をさらにデバッグする必要があります。

+1

私はただSESSION.serファイルを削除してくれました。 –

1

私はEclipseと同様のエラーが発生しました。

  • ウィザード
  • を使って日食のサーバービューで新しいTomcatサーバーを定義日食
  • のサーバービューでTomcatサーバーを削除するプロジェクトにクリーンを行います。私は、これらの手順でそれを解決しました
  • は、すべてが完璧に働いていたこの新しいTomcatサーバーを実行している、新しく定義されたTomcatサーバーその後

にプロジェクトを追加します。

28

tomcat "work"フォルダを削除します。 tomcatサーバーを再起動してください。これで、例外やエラーがなくても実行できるようになりました!

これにTomcat内のサーバーを選択し、「クリーンTomcatの作業ディレクトリ」を選択することによって行うことができる

enter image description here

3

それはクラスがちょうど停止のApacheを適切にシリアライズされませんでした永続だけなので単にあります。プロジェクトを削除し、プロジェクトとサーバーもクリーンアップします。

ここではその完了です。がんばろう。

4

ちょうど私によく働いているTomcat作業ディレクトリをきれいにしてください。

1

- クラスはserialVersionUIDでSerializableインターフェイスを実装する必要があります。 - クリーンビルドを行い、サーバを再起動してください

関連する問題