2016-10-10 8 views
0

私は、Liferay 6.2のインストールでTomcatクラスタ環境を使用しています。各Tomcatには、Springベースのポートレット・アプリケーションが多数デプロイされています。私の問題は、セッションレプリケーションの実行が実行されているときです。自分のポートレットのカスタムクラスに関連するClassNotFoundExceptionを取得します。この問題を調査したところ、TomcatコアのClassloaderでセッション複製の実行が行われ、セッションに保存されたカスタムクラスがカスタムポートレットクラスローダーにロードされることが判明しました。ClassNotFoundExceptionを取得することは、Tomcatクラスタ環境でセッション属性をデシリアライズすることです

2016年10月7日午前1時42分08秒PM org.apache.catalina.session.StoreBase processExpires
SEVERE:セッション:EA336308A2FDB389CA636EDFC537BEB6.lfrtc1。 java.lang.ClassNotFoundException:com.pullmantur.portal.cruise.web.result.model.vo.CruiseSearchForm at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache。 (org.apache.catalina)の の場合は、 (アクセシビリティ・クラスの場合) (クラス。java:278) (ObjectInputStream.java:1517) at java.io.CustomObjectInputStream.resolveClass .ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)(ObjectInputStream.java:370) at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:ObjectInputStream.java:1370) の場合は、 (JDBCStore.java:657) at org.apache.catalina。 (ManagerBase.java:449)の のセッション.StoreBase.processExpires(StoreBase.java:157) at org.apache.catalina.session.PersistentManagerBase.processExpires(PersistentManagerBase.java:449) のorg.apache.catalina.session.ManagerBase.backgroundProcess 566) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1352)012コンテナベースのコンテナ。コンテナベースのコンテナ。 (ContainerBase.java:1556) at org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.run(ContainerBase.java:1524) at java.lang.Thread.run(Thread。 java:745)

誰かが私にこれを解決するのを助けてくれますか?

答えて

0

それはケースとセッションレプリケーションは完全にあなたがTomcatの共通クラスローダー(explained here)にあなたのクラス(Tomcatが見つかりませんでしたもの)を追加する必要があり、アプリケーションのクラスパスから分離されていた場合。

POJOだけで、これらのクラスを別々のジャーに分ける方が良いです。

そうでなければ、より一般的なものとしてオブジェクトを保存することができます(HashMapなど)。

関連する問題