Grails Tomcat无法序列化sessionid:groovy.lang.MapWithDefault的增量请求

Grails Tomcat无法序列化sessionid:groovy.lang.MapWithDefault的增量请求,session,tomcat,grails,session-variables,Session,Tomcat,Grails,Session Variables,我正在从事的Grails项目将war部署到多个Tomcat上,并启用了会话复制 除了开始在所有g:form实体中使用useToken之外,我们最近对会话进行了一些更改。(可能还有其他原因,但初步查看最近提交的所有代码都找不到任何相关信息。) 我知道下面的错误与会话对象不可序列化有关,但我不确定从哪里开始查找 有没有人在Grails中遇到过下面的错误 它可能与表单中的useToken有关吗 这是g:forms中useToken的已知限制吗?即它们不支持序列化 或者,如何查找会话中的所有对象以查看哪

我正在从事的Grails项目将war部署到多个Tomcat上,并启用了会话复制

除了开始在所有g:form实体中使用useToken之外,我们最近对会话进行了一些更改。(可能还有其他原因,但初步查看最近提交的所有代码都找不到任何相关信息。)

我知道下面的错误与会话对象不可序列化有关,但我不确定从哪里开始查找

有没有人在Grails中遇到过下面的错误

它可能与表单中的useToken有关吗

这是g:forms中useToken的已知限制吗?即它们不支持序列化

或者,如何查找会话中的所有对象以查看哪个对象导致此错误

 org.apache.catalina.ha.session.DeltaManager.requestCompleted Unable to serialize delta request for sessionid [6F6A26B3FF57A901F5D868FB68CA4A6F]
 java.io.NotSerializableException: groovy.lang.MapWithDefault
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
        at org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:384)
        at org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequest.java:277)
        at org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest.java:291)
        at org.apache.catalina.ha.session.DeltaManager.serializeDeltaRequest(DeltaManager.java:617)
        at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1000)
        at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:965)
        at org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.java:525)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(ReplicationValve.java:513)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:495)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage(ReplicationValve.java:406)
        at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:329)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

找到了答案:这是Grails2.2.1的一个已知问题

因此,从本质上讲,如果您在集群中使用启用会话复制的Grails 2.2.1,并且使用令牌,它将中断会话复制