Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化问题:org.springframework.dao.support.PersistenceExceptionTranslationInterceptor_Java_Spring_Serialization_Deserialization_Spring Security Oauth2 - Fatal编程技术网

Java 序列化问题:org.springframework.dao.support.PersistenceExceptionTranslationInterceptor

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

我在为oauth2密码流序列化JdbcTokenStore.java中的身份验证对象时遇到以下异常

    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的对象已经可以序列化了。那么它也不起作用了(你能分享更多的代码来解决问题吗?