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: $composer=org.zkoss.bind.BindComposer@45f1b067
    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 'org.zkoss.zk.ui.http.SerializableSession@1f9bd946'; 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
3250 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: $composer=org.zkoss.bind.BindComposer@38cc879f
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 'org.zkoss.zk.ui.http.SerializableSession@7f4fb979'; 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.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.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 [com.vyv.hov2.repository.CustomRepositoryImpl@776682b]]; 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", org.springframework.aop.framework.JdkDynamicAopProxy@88477f8a)
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", com.vyv.hov2.repository.CustomRepositoryImpl@776682b)
    - 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f])
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f]]; 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", com.vyv.hov2.viewModel.LoginViewModel@15d2453)
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", org.zkoss.bind.BindComposer@38cc879f)
    - 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", org.zkoss.zk.ui.impl.SimpleDesktopCache@8570f71)
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", org.zkoss.zk.ui.http.SerializableSession@7f4fb979)
    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.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 [com.vyv.hov2.repository.CustomRepositoryImpl@776682b]]; 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", org.springframework.aop.framework.JdkDynamicAopProxy@88477f8a)
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", com.vyv.hov2.repository.CustomRepositoryImpl@776682b)
    - 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f])
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f]]; 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", com.vyv.hov2.viewModel.LoginViewModel@15d2453)
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", org.zkoss.bind.BindComposer@38cc879f)
    - 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", org.zkoss.zk.ui.impl.SimpleDesktopCache@8570f71)
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", org.zkoss.zk.ui.http.SerializableSession@7f4fb979)
    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.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 [com.vyv.hov2.repository.CustomRepositoryImpl@776682b]]; 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", org.springframework.aop.framework.JdkDynamicAopProxy@88477f8a)
    - field (class "java.lang.reflect.Proxy", name: "h", type: "interface java.lang.reflect.InvocationHandler")
    - object (class "com.sun.proxy.$Proxy170", com.vyv.hov2.repository.CustomRepositoryImpl@776682b)
    - 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f])
    - 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 [com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f]]; 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", com.vyv.hov2.business.impl.ConfBusinessImpl@6f377b1f)
    - field (class "com.vyv.hov2.viewModel.LoginViewModel", name: "confB", type: "interface com.vyv.hov2.business.ConfBusiness")
    - object (class "com.vyv.hov2.viewModel.LoginViewModel", com.vyv.hov2.viewModel.LoginViewModel@15d2453)
    - field (class "org.zkoss.bind.BindComposer", name: "_viewModel", type: "class java.lang.Object")
    - object (class "org.zkoss.bind.BindComposer", org.zkoss.bind.BindComposer@38cc879f)
    - 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", org.zkoss.zk.ui.impl.SimpleDesktopCache@8570f71)
    - custom writeObject data (class "org.zkoss.zk.ui.http.SerializableSession")
    - root object (class "org.zkoss.zk.ui.http.SerializableSession", org.zkoss.zk.ui.http.SerializableSession@7f4fb979)
    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
3250 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", org.zkoss.zk.ui.http.SerializableSession@7f4fb979)

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