2016-10-10 2 views
0

Liferay 6.2가 설치된 Tomcat 클러스터 환경이 있습니다. 각 Tomcat에는 많은 Spring 기반 포틀릿 애플리케이션이 배치되어 있습니다. 내 문제는 세션 복제 프로세스가 실행될 때입니다. ClassNotFoundException이 내 포틀릿의 사용자 정의 클래스와 관련이 있습니다. 이 문제를 조사한 결과, 세션 복제 프로 시저가 Tomcat 코어 클래스 로더에서 실행되고 세션에 저장된 사용자 정의 클래스가 사용자 정의 포틀릿 클래스 로더에서로드된다는 사실을 발견했습니다.ClassNotFoundException을 얻는 중 Tomcat 클러스터 환경에서 세션 속성을 비 직렬화

2016년 10월 7일 오후 1시 42분 8초 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. catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1571) at java.lang.Class.forName0 (기본 메소드) at java.lang.Class.forName (Class.java:278) at org.apache.catalina .util.CustomObjectInputStream.resolveClass (CustomObjectInputStream.java:74)에서 java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1612) at java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1517) at java.io .ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:1771)(ObjectInputStream.java:370) at org.apache.catalina.session.StandardSession.readObject (StandardSession.java : ObjectInputStream.reader) 1619) at org.apache.catalina.session.StandardSession.readObjectData (StandardSession.java:1084) at org.apache.catalina.session.JDBCStore.load (JDBCStore.java:657) at org.apache.catalina. session.StoreBase.processExpires (StoreBase.java:157) at org.apache.catalina.session.PersistentManagerBase.processExpires (PersistentManagerBase.java:449) at org.apache.catalina.session.ManagerBase.backgroundProcess (ManagerBase.java : 566) at org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1352) 012 org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren에서 org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren (ContainerBase.java:1546) (ContainerBase.java:1556) org.apache에서 에서 3,516,. (ContainerBase.java : 1556) at org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.run (ContainerBase.java:1524) at java.lang.Thread.run (Thread. java : 745)

이 문제를 해결할 수있는 사람이 있습니까?

답변

0

그런 경우이고 세션 복제가 애플리케이션 클래스 경로와 완전히 분리되어 있다면 클래스 (Tomcat에서 찾을 수없는 클래스)를 Tomcat의 공통 클래스 로더 (explained here)에 추가해야합니다.

POJO 만 사용하여 클래스를 별도의 병으로 분리하는 것이 좋습니다.

그렇지 않으면 더 일반적인 것으로 개체를 저장할 수 있습니다 (예 : HashMap).

관련 문제