0

Spring Session jdbc throws: Unable to serialize entry

asked 2022-01-05 07:14:38 +0800

vince1101 gravatar image vince1101
31

We have an aplication based on ZK with Spring Boot / Spring Security / JPA implementation running in Google Cloud Run, within a docker. It works quite fine with non jdbc persistent sessions. Google is probably sending the requests with the same JSESSION_ID to same server of the server pool. Unfortunatelly, too often the aplication closes and the user has to relogin, probably when the server previously answering the requests is shutdown or becomes too busy and Google decides to change the destination server.

Our idea to improve usability was to implement the Spring persistent session which is very easy to implement. It is just about adding in the Pom :

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-jdbc</artifactId>
</dependency>

and the .properties :

 spring.session.store-type=jdbc
 spring.session.jdbc.initialize-schema=ALWAYS

The table for holding the session data is created, the server starts, but when trying to load the login page we get the following error :

    2022-01-04 16:50:19.395  INFO 15092 --- [nio-8443-exec-4] o.z.util.resource.impl.LabelLoaderImpl   : Loading labels for es
    2022-01-04 16:50:19.396  INFO 15092 --- [nio-8443-exec-4] o.z.util.resource.impl.LabelLoaderImpl   : Opening file:/C:/gitlab/hov2-springboot/target/classes/metainfo/zk-label_es.properties
    2022-01-04 16:50:19.399  INFO 15092 --- [nio-8443-exec-4] o.z.util.resource.impl.LabelLoaderImpl   : Opening file:/C:/gitlab/hov2-springboot/target/classes/metainfo/zk-label.properties
    2022-01-04 16:50:19.615 ERROR 15092 --- [nio-8443-exec-4] org.zkoss.io.serializable                : Unable to serialize entry: [email protected]
    2022-01-04 16:50:19.718 ERROR 15092 --- [nio-8443-exec-4] o.a.c.c.C.[.[.[/V2].[auEngine]           : Servlet.service() for servlet [auEngine] threw exception

    org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object] to type [byte[]] for value '[email protected]'; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
        at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47)
        at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192)
.....
Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
    at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:64)
    at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:33)
    at org.springframework.core.convert.support.GenericConversionService$ConverterAdapter.convert(GenericConversionService.java:386)
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41)
    ... 155 common frames omitted
Caused by: java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)

This error looks like this is one of the ZK framework object that is not serializable, I double checked that all the session data is serializable and did not find any thing wrong on that side.

I can add here some config files in this post, but i basically followed the instruccions from :

https://www.zkoss.org/wiki/ZKInstallationGuide/SettingupServers/GoogleAppEngine

the zk.xml is as follows :

    <?xml version="1.0" encoding="UTF-8"?>
<zk>
    <!-- clustering environment -->
    <system-config>
        <disable-event-thread/>
        <ui-factory-class>org.zkoss.zk.ui.http.SerializableUiFactory</ui-factory-class>
    </system-config>
    <!-- clustering environment (available since ZK 5.0.8)-->
    <listener>
        <listener-class>org.zkoss.zkplus.cluster.ClusterSessionPatch</listener-class>
        <listener-class>com.vyv.hov2.ui.MyDesktopInit</listener-class>
    </listener>
    <client-config>
        <resend-delay>-1</resend-delay>
    </client-config>
    <device-config>
        <!-- GAE doesn't allow user's thread -->
        <resend-delay>-1</resend-delay>
        <timeout-uri>/login</timeout-uri>
        <!-- Configure the progress message to show in the center -->
        <device-type>ajax</device-type>
        <embed><![CDATA[
        <script type="text/javascript">
            AU_progressbar = function (id, msg)
            {
                Boot_progressbox(id, msg, 0, 0, true, true);
            };
        </script>
    ]]></embed>
        <!-- An empty URL can cause the browser to reload the same URL -->
    </device-config>

    <config-name>zkspringboot-demo</config-name>
    <language-config>
        <addon-uri>/metainfo/zk/ckez-bind-addon.xml</addon-uri>
        <addon-uri>/metainfo/zk/gmapsz-bind-addon.xml</addon-uri>
    </language-config>

    <language-mapping>
        <language-name>xml</language-name>
        <extension>svg</extension>
    </language-mapping>
    <language-mapping>
        <language-name>xml</language-name>
        <extension>xml2html</extension>
    </language-mapping>


    <!-- eso el dia que bajo en template...-->
    <library-property>
        <name>org.zkoss.theme.preferred</name>
        <value>iceblue_c</value>
    </library-property>



    <!-- ZK properties loader -->

    <library-property>
        <name>org.zkoss.zul.listbox.rightSelect</name>
        <value>true</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zul.tree.rightSelect</name>
        <value>true</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zk.ui.input.grouping.allowed</name>
        <value>false</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zul.listbox.checkmarkDeselectOthers</name>
        <value>true</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zul.progressbox.position</name>
        <value>center</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zul.listbox.autoSort</name>
        <value>true</value>
    </library-property>
    <library-property>
        <name>org.zkoss.zul.grid.autoSort</name>
        <value>true</value>
    </library-property>
</zk>

the ZK servlet registration beans are as follows :

/**
 * Dhtml layout servlet servlet registration bean.
 *
 * @return the servlet registration bean
 */
@Bean
public ServletRegistrationBean dHtmlLayoutServlet() {
    Map<String, String> params = new HashMap<String, String>();
    params.put("update-uri", "/zkau");
    DHtmlLayoutServlet dHtmlLayoutServlet = new DHtmlLayoutServlet();
    ServletRegistrationBean reg = new ServletRegistrationBean(dHtmlLayoutServlet, "*.zul");
    reg.setName("zkLoader");
    reg.setLoadOnStartup(1);
    reg.setInitParameters(params);
    return reg;
}

@Bean
public ServletRegistrationBean dHtmlUpdateServlet() {
    ServletRegistrationBean reg = new ServletRegistrationBean(new DHtmlUpdateServlet(), "/zkau/*", "/zkau");
    reg.setName("auEngine");
    reg.setLoadOnStartup(2);
    return reg;
}

Extract of the POM :

    <repositories>
            <repository>
                <id>ZK CE</id>
                <name>ZK CE Repository</name>
                <url>https://mavensync.zkoss.org/maven2</url>
            </repository>
            <!--        -->
        </repositories>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <java.version>11</java.version>
            <springfox-version>3.0.0</springfox-version>
            <jacoco.percentage.instruction>0.0</jacoco.percentage.instruction>
            <zk.version>9.6.0.1</zk.version>
            <jr.version>6.17.0</jr.version>
            <passay.version>1.0</passay.version>
            <zkspringboot.version>2.3.1</zkspringboot.version>
            <validation-api.version>2.0.1.Final</validation-api.version>
            <javassist.version>3.27.0-GA</javassist.version>
            <jaxb-api.version>2.4.0-b180830.0359</jaxb-api.version>

            <maven.build.timestamp.format>yyyy-MM-dd'T'HH.mm.ss</maven.build.timestamp.format>
        </properties>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.1</version>
        </parent>
    <dependencies>
            <dependency>
                <groupId>com.google.cloud.sql</groupId>
                <artifactId>postgres-socket-factory</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.zkoss.zkspringboot</groupId>
                <artifactId>zkspringboot-autoconfig</artifactId>
                <version>${zkspringboot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.zkoss.zk</groupId>
                <artifactId>zkbind</artifactId>
                <version>${zk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-jdk14</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.zkoss.zk</groupId>
                <artifactId>zkplus</artifactId>
                <version>${zk.version}</version>
            </dependency>
            <dependency>
                <groupId>org.zkoss.zk</groupId>
                <artifactId>zul</artifactId>
                <version>${zk.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>javase</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
            <!-- for persistent sessions -->
            <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session-jdbc</artifactId>
            </dependency>
</dependencies>

Any help to succeed implementing the Spring Session store with ZK is welcome !

I found that this error is thrown after the ViewModel is initialized, i mean after the afterCompose of the view model is finished, so just before displaying the page, probably when Spring tries to store the Session data in the Database.

This is a "org.zkoss.bind.BindComposer" Object that fails to serialize any idea why ?

delete flag offensive retag edit

Comments

Hi, have you solved this problem?

AntonF ( 2023-02-27 19:26:59 +0800 )edit

3 Answers

Sort by ยป oldest newest most voted
0

answered 2022-01-05 14:11:33 +0800

hawk gravatar image hawk
3135 1 5
http://hawkphoenix.blogsp... ZK Team

Please call System.setProperty("sun.io.serialization.extendedDebugInfo", "true"); which will print details debugging information about which member field is not serializable.

link publish delete flag offensive edit
0

answered 2022-01-06 02:08:33 +0800

vince1101 gravatar image vince1101
31

Here is the complete log :

2022-01-05 12:45:20.410 ERROR 27596 --- [nio-8443-exec-4] org.zkoss.io.serializable                : Unable to serialize entry: [email protected]
2022-01-05 12:45:20.508 ERROR 27596 --- [nio-8443-exec-4] o.a.c.c.C.[.[.[/V2].[auEngine]           : Servlet.service() for servlet [auEngine] threw exception

org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object] to type [byte[]] for value '[email protected]'; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
    - field (class "org.springframework.aop.support.AbstractGenericPointcutAdvisor", name: "advice", type: "interface org.aopalliance.aop.Advice")
    - object (class "org.springframework.aop.support.DefaultPointcutAdvisor", org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8])
    - custom writeObject data (class "java.util.ArrayList")
    - object (class "java.util.ArrayList", [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslatio[email protected]], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@64eec21d], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "advisors", type: "interface java.util.List")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 3 interfaces [com.vyv.hov2.repository.ConfRepository, org.springframework.data.repository.Repository, org.springframework.transaction.interceptor.TransactionalProxy]; 7 advisors [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslationInterceptor@5f18770], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@64eec21d], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2]; targetSource [SingletonTargetSource for target object [[email protected]]]; proxyTargetClass=false; optimize=false; opaque=false; exposeProxy=false; frozen=false)
    - field (class "org.springframework.aop.framework.JdkDynamicAopProxy", name: "advised", type: "class org.springframework.aop.framework.AdvisedSupport")
    - object (class "org.springframework.aop.framework.JdkDynamicAopProxy", [email protected])
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", [email protected])
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl", name: "confRepository", type: "interface com.vyv.hov2.repository.ConfRepository")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl", [email protected])
    - field (class "org.springframework.aop.target.SingletonTargetSource", name: "target", type: "class java.lang.Object")
    - object (class "org.springframework.aop.target.SingletonTargetSource", SingletonTargetSource for target object [[email protected]])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "targetSource", type: "interface org.springframework.aop.TargetSource")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 0 interfaces []; 1 advisors [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor: advice org.springframework.transaction.interceptor.TransactionInterceptor@4f64d9cb]; targetSource [SingletonTargetSource for target object [[email protected]]]; 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@2b88fa68)
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", name: "CGLIB$CALLBACK_0", type: "interface org.springframework.cglib.proxy.MethodInterceptor")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", [email protected])
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", [email protected])
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractComponent")
    - object (class "org.zkoss.zul.Window", <Window yH5Q0#win>)
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractPage")
    - object (class "org.zkoss.zk.ui.impl.PageImpl", [Page yH5Q_])
    - custom writeObject data (class "java.util.LinkedList")
    - object (class "java.util.LinkedList", [[Page yH5Q_]])
    - field (class "org.zkoss.zk.ui.impl.DesktopImpl", name: "_pages", type: "interface java.util.List")
    - custom writeObject data (class "org.zkoss.zk.ui.impl.DesktopImpl")
    - object (class "org.zkoss.zk.ui.impl.DesktopImpl", [Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul])
    - field (class "org.zkoss.util.CacheMap$Value", name: "value", type: "class java.lang.Object")
    - object (class "org.zkoss.util.CacheMap$Value", ([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684))
    - custom writeObject data (class "java.util.HashMap")
    - object (class "java.util.LinkedHashMap", {z_Jbfu8exW9haA_LuuwzUJCQ=([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684)})
    - field (class "org.zkoss.util.CacheMap", name: "_map", type: "interface java.util.Map")
    - custom writeObject data (class "org.zkoss.util.CacheMap")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache", {z_Jbfu8exW9haA_LuuwzUJCQ=[Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]})
    - field (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", name: "_desktops", type: "class org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", [email protected])
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47)
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.serialize(JdbcIndexedSessionRepository.java:623)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.access$400(JdbcIndexedSessionRepository.java:133)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository$1.setValues(JdbcIndexedSessionRepository.java:487)
    at org.springframework.jdbc.core.JdbcTemplate.lambda$batchUpdate$4(JdbcTemplate.java:1042)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:651)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:691)
    at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:1034)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.insertSessionAttributes(JdbcIndexedSessionRepository.java:479)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.access$1200(JdbcIndexedSessionRepository.java:133)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.lambda$save$5(JdbcIndexedSessionRepository.java:831)
    at org.springframework.transaction.support.TransactionOperations.lambda$executeWithoutResult$0(TransactionOperations.java:68)
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
    at org.springframework.transaction.support.TransactionOperations.executeWithoutResult(TransactionOperations.java:67)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.save(JdbcIndexedSessionRepository.java:816)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.access$200(JdbcIndexedSessionRepository.java:665)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.save(JdbcIndexedSessionRepository.java:422)
    at org.springframework.session.jdbc.JdbcIndexedSessionRepository.save(JdbcIndexedSessionRepository.java:133)
    at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.commitSession(SessionRepositoryFilter.java:226)
    at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.access$100(SessionRepositoryFilter.java:193)
    at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryResponseWrapper.onResponseCommitted(SessionRepositoryFilter.java:180)
    at org.springframework.session.web.http.OnCommittedResponseWrapper.doOnResponseCommitted(OnCommittedResponseWrapper.java:227)
    at org.springframework.session.web.http.OnCommittedResponseWrapper.checkContentLength(OnCommittedResponseWrapper.java:217)
    at org.springframework.session.web.http.OnCommittedResponseWrapper.trackContentLength(OnCommittedResponseWrapper.java:179)
    at org.springframework.session.web.http.OnCommittedResponseWrapper.access$1100(OnCommittedResponseWrapper.java:35)
    at org.springframework.session.web.http.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:617)
    at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:632)
    at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:632)
    at org.zkoss.zk.ui.http.ZumlExtendlet.process(ZumlExtendlet.java:161)
    at org.zkoss.zk.ui.http.ZumlExtendlet.service(ZumlExtendlet.java:115)
    at org.zkoss.web.util.resource.ClassWebResource.web0(ClassWebResource.java:615)
    at org.zkoss.web.util.resource.ClassWebResource.web(ClassWebResource.java:602)
    at org.zkoss.web.util.resource.ClassWebResource.service(ClassWebResource.java:282)
    at org.zkoss.zk.au.http.DHtmlResourceServlet.doGet0(DHtmlResourceServlet.java:117)
    at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:397)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
    at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper$SessionCommittingRequestDispatcher.forward(SessionRepositoryFilter.java:412)
    at org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterRequestDispatcher.forward(HeaderWriterFilter.java:171)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:171)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1396)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1141)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:133)
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147)
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:133)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:142)
    at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
    - field (class "org.springframework.aop.support.AbstractGenericPointcutAdvisor", name: "advice", type: "interface org.aopalliance.aop.Advice")
    - object (class "org.springframework.aop.support.DefaultPointcutAdvisor", org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8])
    - custom writeObject data (class "java.util.ArrayList")
    - object (class "java.util.ArrayList", [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslationInterceptor@5f18770], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@64eec21d], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "advisors", type: "interface java.util.List")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 3 interfaces [com.vyv.hov2.repository.ConfRepository, org.springframework.data.repository.Repository, org.springframework.transaction.interceptor.TransactionalProxy]; 7 advisors [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframewor[email protected]], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@64eec21d], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2]; targetSource [SingletonTargetSource for target object [[email protected]]]; proxyTargetClass=false; optimize=false; opaque=false; exposeProxy=false; frozen=false)
    - field (class "org.springframework.aop.framework.JdkDynamicAopProxy", name: "advised", type: "class org.springframework.aop.framework.AdvisedSupport")
    - object (class "org.springframework.aop.framework.JdkDynamicAopProxy", [email protected])
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", [email protected])
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl", name: "confRepository", type: "interface com.vyv.hov2.repository.ConfRepository")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl", [email protected])
    - field (class "org.springframework.aop.target.SingletonTargetSource", name: "target", type: "class java.lang.Object")
    - object (class "org.springframework.aop.target.SingletonTargetSource", SingletonTargetSource for target object [[email protected]])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "targetSource", type: "interface org.springframework.aop.TargetSource")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 0 interfaces []; 1 advisors [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor: advice org.springframework.transaction.interceptor.TransactionInterceptor@4f64d9cb]; targetSource [SingletonTargetSource for target object [[email protected]]]; 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@2b88fa68)
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", name: "CGLIB$CALLBACK_0", type: "interface org.springframework.cglib.proxy.MethodInterceptor")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", [email protected])
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", [email protected])
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractComponent")
    - object (class "org.zkoss.zul.Window", <Window yH5Q0#win>)
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractPage")
    - object (class "org.zkoss.zk.ui.impl.PageImpl", [Page yH5Q_])
    - custom writeObject data (class "java.util.LinkedList")
    - object (class "java.util.LinkedList", [[Page yH5Q_]])
    - field (class "org.zkoss.zk.ui.impl.DesktopImpl", name: "_pages", type: "interface java.util.List")
    - custom writeObject data (class "org.zkoss.zk.ui.impl.DesktopImpl")
    - object (class "org.zkoss.zk.ui.impl.DesktopImpl", [Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul])
    - field (class "org.zkoss.util.CacheMap$Value", name: "value", type: "class java.lang.Object")
    - object (class "org.zkoss.util.CacheMap$Value", ([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684))
    - custom writeObject data (class "java.util.HashMap")
    - object (class "java.util.LinkedHashMap", {z_Jbfu8exW9haA_LuuwzUJCQ=([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684)})
    - field (class "org.zkoss.util.CacheMap", name: "_map", type: "interface java.util.Map")
    - custom writeObject data (class "org.zkoss.util.CacheMap")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache", {z_Jbfu8exW9haA_LuuwzUJCQ=[Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]})
    - field (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", name: "_desktops", type: "class org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", [email protected])
    at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:64)
    at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:33)
    at org.springframework.core.convert.support.GenericConversionService$ConverterAdapter.convert(GenericConversionService.java:386)
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41)
    ... 155 common frames omitted
Caused by: java.io.NotSerializableException: org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor
    - field (class "org.springframework.aop.support.AbstractGenericPointcutAdvisor", name: "advice", type: "interface org.aopalliance.aop.Advice")
    - object (class "org.springframework.aop.support.DefaultPointcutAdvisor", org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8])
    - custom writeObject data (class "java.util.ArrayList")
    - object (class "java.util.ArrayList", [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslationInterceptor@5f18770], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@64eec21d], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "advisors", type: "interface java.util.List")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 3 interfaces [com.vyv.hov2.repository.ConfRepository, org.springframework.data.repository.Repository, org.springframework.transaction.interceptor.TransactionalProxy]; 7 advisors [org.springframework.aop.interceptor.ExposeInvocationInterceptor.ADVISOR, org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@586a49e8], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslationInterceptor@5f18770], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@6aa74b32], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMetho[email protected]], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@6ec1e261], org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor@18709cb2]; targetSource [SingletonTargetSource for target object [[email protected]]]; proxyTargetClass=false; optimize=false; opaque=false; exposeProxy=false; frozen=false)
    - field (class "org.springframework.aop.framework.JdkDynamicAopProxy", name: "advised", type: "class org.springframework.aop.framework.AdvisedSupport")
    - object (class "org.springframework.aop.framework.JdkDynamicAopProxy", [email protected])
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", [email protected])
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl", name: "confRepository", type: "interface com.vyv.hov2.repository.ConfRepository")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl", [email protected])
    - field (class "org.springframework.aop.target.SingletonTargetSource", name: "target", type: "class java.lang.Object")
    - object (class "org.springframework.aop.target.SingletonTargetSource", SingletonTargetSource for target object [[email protected]])
    - field (class "org.springframework.aop.framework.AdvisedSupport", name: "targetSource", type: "interface org.springframework.aop.TargetSource")
    - object (class "org.springframework.aop.framework.ProxyFactory", org.springframework.aop.framework.ProxyFactory: 0 interfaces []; 1 advisors [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor: advice org.springframework.transaction.interceptor.TransactionInter[email protected]]; targetSource [SingletonTargetSource for target object [[email protected]]]; 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@2b88fa68)
    - field (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", name: "CGLIB$CALLBACK_0", type: "interface org.springframework.cglib.proxy.MethodInterceptor")
    - object (class "com.vyv.hov2.business.impl.ConfBusinessImpl$$EnhancerBySpringCGLIB$$1da6c3fa", [email protected])
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", [email protected])
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractComponent")
    - object (class "org.zkoss.zul.Window", <Window yH5Q0#win>)
    - custom writeObject data (class "org.zkoss.zk.ui.AbstractPage")
    - object (class "org.zkoss.zk.ui.impl.PageImpl", [Page yH5Q_])
    - custom writeObject data (class "java.util.LinkedList")
    - object (class "java.util.LinkedList", [[Page yH5Q_]])
    - field (class "org.zkoss.zk.ui.impl.DesktopImpl", name: "_pages", type: "interface java.util.List")
    - custom writeObject data (class "org.zkoss.zk.ui.impl.DesktopImpl")
    - object (class "org.zkoss.zk.ui.impl.DesktopImpl", [Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul])
    - field (class "org.zkoss.util.CacheMap$Value", name: "value", type: "class java.lang.Object")
    - object (class "org.zkoss.util.CacheMap$Value", ([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684))
    - custom writeObject data (class "java.util.HashMap")
    - object (class "java.util.LinkedHashMap", {z_Jbfu8exW9haA_LuuwzUJCQ=([Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]@1641404719684)})
    - field (class "org.zkoss.util.CacheMap", name: "_map", type: "interface java.util.Map")
    - custom writeObject data (class "org.zkoss.util.CacheMap")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache", {z_Jbfu8exW9haA_LuuwzUJCQ=[Desktop z_Jbfu8exW9haA_LuuwzUJCQ:/zul/login.zul]})
    - field (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", name: "_desktops", type: "class org.zkoss.zk.ui.impl.SimpleDesktopCache$Cache")
    - object (class "org.zkoss.zk.ui.impl.SimpleDesktopCache", [email protected])
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", [email protected])
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at java.base/java.util.ArrayList.writeObject(ArrayList.java:897)
    at java.base/jdk.internal.reflect.GeneratedMethodAccessor140.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at org.zkoss.io.Serializables.smartWrite(Serializables.java:62)
    at org.zkoss.zk.ui.AbstractComponent.writeObject(AbstractComponent.java:3465)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at org.zkoss.zk.ui.AbstractPage.writeObject(AbstractPage.java:246)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at java.base/java.util.LinkedList.writeObject(LinkedList.java:1135)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:442)
    at org.zkoss.zk.ui.impl.DesktopImpl.writeObject(DesktopImpl.java:1214)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at java.base/java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:333)
    at java.base/java.util.HashMap.writeObject(HashMap.java:1411)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:442)
    at org.zkoss.util.CacheMap.writeObject(CacheMap.java:633)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at org.zkoss.zk.ui.http.SimpleSession.writeThis(SimpleSession.java:454)
    at org.zkoss.zk.ui.http.SerializableSession.writeObject(SerializableSession.java:71)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1145)
    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)
    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)
    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)
    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
    at org.springframework.core.serializer.DefaultSerializer.serialize(DefaultSerializer.java:46)
    at org.springframework.core.serializer.Serializer.serializeToByteArray(Serializer.java:56)
    at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:60)
    ... 158 common frames omitted
link publish delete flag offensive edit
0

answered 2022-01-06 10:36:35 +0800

hawk gravatar image hawk
3135 1 5
http://hawkphoenix.blogsp... ZK Team

updated 2022-01-12 10:42:21 +0800

If you check the exception, the last field it printed is the root cause of NotSerializableException:

- field (class "org.springframework.aop.support.AbstractGenericPointcutAdvisor", name: "advice", type: "interface org.aopalliance.aop.Advice")

You can trace the object path from the root object to know how your ViewModel references AbstractGenericPointcutAdvisor.

- root object (class "org.zkoss.zk.ui.http.SerializableSession", [email protected])

Hence, I think the exception is not caused by ZK.

link publish delete flag offensive edit
Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2022-01-05 07:14:38 +0800

Seen: 10 times

Last updated: Jan 12 '22

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More