2014-06-25 4 views
0

내가 OpenSSO에서 제공하는 SAML 라이브러리 보안 모듈을 구현 한,하지만 내 서버가 제대로 닫고 예외를 받고되지 않습니다톰캣 가지는 NotSerializableException

java.io.NotSerializableException: com.sun.identity.saml2.assertion.impl.AssertionImpl 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.HashMap.writeObject(HashMap.java:1014) 
    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:601) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:975) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1671) 
    at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077) 
    at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:430) 
    at org.apache.catalina.session.StandardManager.unload(StandardManager.java:351) 
    at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:516) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5655) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575) 
    at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

내 호출 클래스가 이미 직렬화,이 문제를 해결하는 방법에 대해 설명합니다.

+0

하나는 일반적으로 파일에 Serializable 인터페이스를 구현하지 않는 클래스의 객체를 저장하려고 할 때 해당 예외를 가져옵니다. 당신은 모든 클래스가 직렬화 가능하다고합니다. 어쩌면 당신은 ** HAS-A ** 관계를 가지고 있고 그 클래스는 serilizable이 아닙니다. – Oliver

+0

제가 제거한 has-a 릴레이션을 가지고 있었지만 여전히 얻고 있습니다 그리고 그것의 라이브러리 클래스 , 그것을 제거하는 다른 방법입니다. – Phalguni

+0

글쎄 라이브러리 클래스라면 문제가 될 수도 있지만 항상 탈출구가 있습니다. 죄송합니다. OpenSSO 구현을 한 번도 해보지 않으므로 도와 드릴 수 없습니다. – Oliver

답변

0

가장 큰 이유는 수신 된 어설 션을 HttpSession에 저장하려고하고 웹 응용 프로그램의 web.xml에 < 배포 가능/> 요소가있어 컨테이너에서 HTTP 세션 클러스터링을 사용할 수 있다는 것입니다. 직렬화 시도).

관련 문제