2014-07-24 2 views
0

Tomcat을 다시 시작하는 동안 IOException이 발생합니다. 제안 된대로 다양한 해결책을 시도했습니다. exception loading sessions from persistent storageTomcat - 세션의 지속성을 방지합니다.

누구도 문제를 해결하지 못했습니다. context.xml에서 <Manager pathname=""/>의 주석 처리를 제거하려했습니다. 도와주지 않았어.

다른 해결책은 클래스를 Serializable으로 구현하는 것입니다. 나는 그것을하고 싶지 않다.

내 목표는 Tomcat이 이러한 세션을 유지하지 않도록하는 것입니다. Tomcat 7.0.54를 사용하고 있습니다.

다음은 스택 추적입니다. 도와주세요.

`SEVERE: IOException while loading persisted sessions: 
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException:  com.comp.cloud.portal.zCompHD 
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.comp.cloud.portal.zCompHD 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at java.util.LinkedList.readObject(LinkedList.java:1136) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at java.util.HashMap.readObject(HashMap.java:1183) 
    at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1619) 
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1084) 
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282) 
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:202) 
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:489) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5476) 
    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.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
+2

"... 위에서 설명한 것처럼 기본적으로 모든 웹 응용 프로그램에는 표준 관리자 구현이 구성되어 있으며 재시작 할 때마다 세션 지속성을 수행합니다.이 지속성 기능을 비활성화하려면 웹 응용 프로그램의 컨텍스트 구성 파일을 만들고 다음 요소가 있습니다. ... "- http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Disable_Session_Persistence – Leo

+0

@Leo : 설명에 명시된 바와 같이 위, 나는 그것을 시도했다. 도와주지 않았어. 이것을 위해 무엇이 더 할 수 있습니까? – vvid

+1

어쨌든 - 지금 세션 지속성을 원한다면 상관없이, 직렬화 할 수없는 것들을 http 세션에 넣는 것은 확실히 나쁜 생각입니다. 그것은 잘못된 응용 프로그램 설계의 지표가 될 수도 있습니다 –

답변

0

구성 방법으로 지속 할 수있는 대체 HttpSession 객체를 제공 봄 세션을 사용할 수이 문제를 해결하는 또 다른 방법. 다양한 지속성 방법을 사용할 수 있습니다. Redis, JDBC 또는 메모리 내장 맵. 기본적으로 (또는 적어도 일부) 항목을 직렬화 할 수 있지만 구현이 훨씬 더 사용자 정의 할 수 있으므로 직렬화 할 수없는 객체를 제거하고 나머지를 남기는 serializer를 설정할 수 있습니다.