Java 序列化问题:org.springframework.dao.support.PersistenceExceptionTranslationInterceptor
我在为oauth2密码流序列化JdbcTokenStore.java中的身份验证对象时遇到以下异常Java 序列化问题:org.springframework.dao.support.PersistenceExceptionTranslationInterceptor,java,spring,serialization,deserialization,spring-security-oauth2,Java,Spring,Serialization,Deserialization,Spring Security Oauth2,我在为oauth2密码流序列化JdbcTokenStore.java中的身份验证对象时遇到以下异常 INFO org.springframework.security.oauth2.provider.endpoint.TokenEndpoint - Handling error: IllegalArgumentException, java.io.NotSerializableException: org.springframework.dao.support.PersistenceEx
INFO org.springframework.security.oauth2.provider.endpoint.TokenEndpoint - Handling error: IllegalArgumentException, java.io.NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor
- field (class "org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor", name: "advice", type: "class org.springframework.dao.support.PersistenceExceptionTranslationInterceptor")
- object (class "org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor", org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@188598ad)
- element of array (index: 0)
- array (class "[Lorg.springframework.aop.Advisor;", size: 1)
- field (class "org.springframework.aop.framework.AdvisedSupport", name: "advisorArray", type: "class [Lorg.springframework.aop.Advisor;")
- object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 0 interfaces []; 1 advisors [org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@188598ad]; targetSource [SingletonTargetSource for target object [com.citruspay.um.config.dao.UMConfigProperties@4e8bc1c1]]; proxyTargetClass=true; optimize=false; opaque=false; exposeProxy=false; frozen=false)
- field (class "org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor", name: "advised", type: "class org.springframework.aop.framework.AdvisedSupport")
- object (class "org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor", org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor@5be0dce3)
- field (class "com.citruspay.um.config.dao.UMConfigProperties$$EnhancerBySpringCGLIB$$e4b0fa51", name: "CGLIB$CALLBACK_0", type: "interface org.springframework.cglib.proxy.MethodInterceptor")
- object (class "com.citruspay.um.config.dao.UMConfigProperties$$EnhancerBySpringCGLIB$$e4b0fa51", com.citruspay.um.config.dao.UMConfigProperties@4e8bc1c1)
- field (class "com.citruspay.common.security.auth.CPUserDetailsImpl", name: "umConfigProperties", type: "class com.citruspay.um.config.dao.UMConfigProperties")
- object (class "com.citruspay.common.security.auth.CPUserDetailsImpl", com.citruspay.common.security.auth.CPUserDetailsImpl@5a328ad9)
- field (class "com.citruspay.common.security.auth.CPUserDetailsImpl$1", name: "this$0", type: "class com.citruspay.common.security.auth.CPUserDetailsImpl")
- object (class "com.citruspay.common.security.auth.CPUserDetailsImpl$1", com.citruspay.common.security.auth.CPUserDetailsImpl$1@37ddcf60)
- custom writeObject data (class "java.util.ArrayList")
- object (class "java.util.ArrayList", [com.citruspay.common.security.auth.CPUserDetailsImpl$1@37ddcf60, com.citruspay.common.security.auth.CPUserDetailsImpl$1@861404d, com.citruspay.common.security.auth.CPUserDetailsImpl$1@7c17f286, com.citruspay.common.security.auth.CPUserDetailsImpl$1@e33e97c])
- field (class "java.util.Collections$UnmodifiableCollection", name: "c", type: "interface java.util.Collection")
- object (class "java.util.Collections$UnmodifiableList", [com.citruspay.common.security.auth.CPUserDetailsImpl$1@37ddcf60, com.citruspay.common.security.auth.CPUserDetailsImpl$1@861404d, com.citruspay.common.security.auth.CPUserDetailsImpl$1@7c17f286, com.citruspay.common.security.auth.CPUserDetailsImpl$1@e33e97c])
- field (class "org.springframework.security.authentication.AbstractAuthenticationToken", name: "authorities", type: "interface java.util.Collection")
- root object (class "org.springframework.security.oauth2.provider.OAuth2Authentication", org.springframework.security.oauth2.provider.OAuth2Authentication@58609f14: Principal: 23812803521413120; Credentials: [PROTECTED]; Authenticated: true; Details: null; Granted Authorities: com.citruspay.common.security.auth.CPUserDetailsImpl$1@37ddcf60, com.citruspay.common.security.auth.CPUserDetailsImpl$1@861404d, com.citruspay.common.security.auth.CPUserDetailsImpl$1@7c17f286, com.citruspay.common.security.auth.CPUserDetailsImpl$1@e33e97c)
有人知道这意味着什么吗?
哪个类是不可序列化的,我如何解决它
另外,我尝试通过序列化和配置PersistenceExceptionTranslationInterceptor.java来扩展PersistenceExceptionTranslationInterceptor.java,而不是PersistenceExceptionTranslationInterceptor.java,但它不起作用。您的“身份验证对象”应
实现可序列化
接口,ObjectImpl的所有成员都应自己可序列化。请实现可序列化接口,ObjectImpl的所有成员都应自己可序列化。尝试@Transient或Transient for field UMConfigProperties实例后,我已经通过重写writeObject(java.io.ObjectOutputStream)和readObject(java.io.ObjectInputStream)解决了这个问题。
当类中要序列化的变量数量较少时,这种方法很好。但是如果有更多的变量,那么我认为我们应该使用@Transient注释或Transient关键字。有人能解释一下吗?OAuth2Authentication.java的对象已经可以序列化了。那么它也不起作用了(你能分享更多的代码来解决问题吗?