2011-03-01 4 views
0

내 상자에서 응용 프로그램을 로컬로 실행할 때 응용 프로그램이 완벽하게 작동합니다. 품질 관리에 배포하면 아래 오류가 발생합니다. 저는 Tomcat 5.5.23을 로컬 및 QA에서 실행하고 있습니다. 이 애플리케이션은 또한 Spring MVC를 사용한다.자바 직렬화 예외 메시지

ERROR 2011-03-01 16시 41분 42초 : 지속 storagejava.io.WriteAbortedException에서 예외로드 세션 : 중단 된 기록; java.io.NotSerializableException : com.everbank.uft.entities.ldc.VoidReason at java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1333) at java.io.ObjectInputStream.readObject (ObjectInputStream.java:351) java.util.ArrayList.readObject (ArrayList.java:593) at sun.reflect.NativeMethodAccessorImpl.invoke0 (네이티브 메소드) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect. 자바 .io에서 java.io.ObjectStreamClass.invokeReadObject (ObjectStreamClass.java:974) 에서 java.lang.reflect.Method.invoke (Method.java:597) 에서 DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) ObjectInputStream.readSerialData (ObjectInputStream.java:1849) at java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject (ObjectInputStream.java:351) at org.apache.catalina.session.StandardSession.readObject (StandardSession.java:1402) at org.apache.catalina.session.StandardSession.readObjectData (StandardSession.java:931) 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:637) at org.apache.catalina.core.ContainerBase.setManager (ContainerBase.java:432) at org.apache.catalina.core.StandardContext.start (StandardContext.java:4160) at org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:760) at org.apache.catalina.core. ContainerBase.addChild (ContainerBase.java:740) at org.apache.catalina.core.StandardHost.addChild (StandardHost.java:544) at org.apache.catalina.startup.HostConfig.deployDescriptor (HostConfig.java:626) at org.apache.catalina.startup.HostConfig.deployDescriptors (HostConfig.java:553) at org.apache.catalina.startup.HostConfig.deployApps (HostConfig.java:488) at org.apache.catalina.startup. (HostConfig.java : 311) (호스트 구성.at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1022) at org.apache.catalina.core. StandardHost.start (StandardHost.java:736) at org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1014) at org.apache.catalina.core.StandardEngine.start (StandardEngine.java:443) at org.apache.catalina.core.StandardService.start (StandardService.java:448) at org.apache.catalina.core.StandardServer.start (StandardServer.java:700) at org.apache.catalina.startup. Catalina.start (Catalina.java:552) at sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 메소드) at sun.reflect.NativeMethodA ccessorImpl.invoke (NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)에서 java.lang.reflect.Method.invoke (Method.java:597)에서 org.apache에서 . catalina.startup.Bootstrap.start (부트 스트랩.java : 295) at org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:433) 에 의해 발생 : java.io.NotSerializableException : com.everbank.uft.entities.ldc.VoidReason at java.io .ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1156) at java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:326) at java.util.ArrayList.writeObject (ArrayList.java:570) at sun.reflect.NativeMethodAccessorImpl java.lang.reflect.Method.invoke에서 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) 에서 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) 에서 .invoke0 (기본 방법) (Method.java:597) at java.io.ObjectStreamCl ass.invokeWriteObject (ObjectStreamClass.java:945) java.io.ObjectOutputStream.writeSerialData (ObjectOutputStream.java:1461)에서 java.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1392)에서 java.io.ObjectOutputStream의 에서 . writeObject0 (ObjectOutputStream.java:1150) java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:326)에서 org.apache.catalina.session.StandardSession.writeObject (StandardSession.java:1478)에서 org.apache에서 . org.apache.catalina.session.StandardManager.doUnload (StandardManager.java:517) at org.apache.catalina.session.StandardManager.unload (StandardManager. java : 463) at org.apache.ca talina.session.StandardManager.stop (StandardManager.java:667) at org.apache.catalina.core.StandardContext.stop (StandardContext.java:4363) at org.apache.catalina.core.ContainerBase.removeChild (ContainerBase. java : 893) at org.apache.catalina.startup.HostConfig.undeployApps (HostConfig.java:1180) at org.apache.catalina.startup.HostConfig.stop (HostConfig.java:1151) at org.apache. catalina.startup.HostConfig.lifecycleEvent (HostConfig.java:313) (org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.stop (ContainerBase. java : 1055) at org.apache.catalina.core.ContainerBase.stop (ContainerBase.java:1067) at org.apache.catalina.core. StandardEngine.stop (StandardEngine.java:448) at org.apache.catalina.core.StandardService.stop (StandardService.java:510) at org.apache.catalina.core.StandardServer.stop (StandardServer.java:734) org.apache.catalina.startup.Catalina.stop (Catalina.java:602) org.apache.catalina.startup.Catalina.start (Catalina.java:577) 에서 ... 6 개의 ERROR에서 2011- 03-01 16:42:49 : UserTrackingFilter.doFilter()가 실패했습니다. 메시지 : 서블릿 실행이 exceptionjavax.servlet.ServletException을 던졌습니다. 서블릿 실행이 예외를 던졌습니다. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter 조직에서 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter에서 com.everbank.uft.filters.UserTrackingFilter.doFilter에서 (ApplicationFilterChain.java:188) (UserTrackingFilter.java:65) (ApplicationFilterChain.java:215) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter에서 .apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:188) com.everbank.uft.filters.HibernateSessionRequestFilter.doFilter (HibernateSessionRequestFilter.java:36)에서 (응용 분야 nFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:210) at org. apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java : 174) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117) at org.apache. (StandardEngineValve.java:108) 에서 org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:151) 에서 org.apache.coyote.http11.Http11Processor.process (Http11Processor. 자바 : 870) org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection (Http11BaseProtocol.java:665) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:528에서 ) 에서의 (LeaderFollowerWorkerThread.java:81)java.lang.Thread.run에서 org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:685) (Thread.java:619)

+0

어떻게 당신을 "품질 보증"을 배포 .. 추가 정보가 필요하십니까? 환경은 어떻게 다른가요? 스택 추적에서 오류는 Hibernate에서 비롯되었으므로 엔티티가 네트워크를 통해 액세스되는 버그가 앱에있을 수 있습니다. Hibernate는 엔티티를 Serializable으로 설정하여 네트워크 경계를 넘어 물건을 보낼 것을 요구합니다. 제안 'com.everbank.uft.entities.ldc.VoidReason'은 직렬화가 가능해야합니다. –

+0

@ dionysus이 문제를 해결하는 방법. 나는 바람둥이에 배치했을 때도 얻고있다. – Balasubramanian

답변

5

이것은 직렬화 할 수없는 세션에 객체를 넣었으며 서버 중지시 세션 지속성을 활성화했음을 의미합니다.

  • 이 세션에 저장된 다른 클래스의 구성원 인 경우 해당 클래스가 Serializable
  • HttpSessionListener
  • sessionDestroyed(..)에 세션에서 제거 구현합니다

    는 여러 옵션이 있습니다 , 확인하십시오. transient

  • 오류를 무시하십시오.

이전의 일련 화 된 세션이 복원되지 않도록 tomcat의 "work"디렉토리도 정리해야합니다.

+0

감사합니다 !! VoidReason 클래스 만들기 Serializable 도움. – dionysus

+0

@dionysus -이 경우 답변을 표시해도 좋습니다 :) – Bozho

2

com.everbank에서. uft.entities.ldc.VoidReason은 Serializable이 아니며 Serializable을 구현하지 않거나 그로부터 상속을받습니다.

+0

도움에 감사드립니다! – dionysus

0

QA 서버에 일련 번호가 지정된 Tomcat 세션이 손상되었거나 다른 방식으로 연결될 수 있습니까?

시도의 삭제 : $ {가리키는 catalina.home}/일/카탈 리/localhost를/"어떤 앱의 이름은"/SESSION.ser

+0

SESSION.ser 파일에 정확히 무엇이 들어 있는지 알려주시겠습니까? – dionysus

+0

Restart Persistence가 활성화 된 경우 세션 상태가 포함됩니다. http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html (표준 관리자 구현 아래) – revdrjrr