繁体   English   中英

会话在Tomcat中集群Grails应用

[英]Session Clustering a Grails app in Tomcat

有人做过吗? 我在反序列化grails会话对象时遇到类加载器问题。

这是错误:

WARN net.spy.memcached.transcoders.SerializingTranscoder:捕获CNFE解码1168个字节的数据[exec] java.lang.ClassNotFoundException:com.myapp.User [exec]在org.codehaus.groovy.tools.RootLoader.findClass(RootLoader。 java:156)[exec]在java.lang.ClassLoader.loadClass(ClassLoader.java:319)[exec]在org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)在组织。 codehaus.groovy.grails.cli.support.GrailsRootLoader.loadClass(GrailsRootLoader.java:43)[exec]在java.lang.ClassLoader.loadClass(ClassLoader.java:254)[exec]在java.lang.ClassLoader.loadClassInternal( ClassLoader.java:402)[exec]在java.lang.Class.forName0(本机方法)[exec]在java.lang.Class.forName(Class.java:247)在java.io.ObjectInputStream.resolveClass [exec] (ObjectInputStream.java:604)[exec]在java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)[exec]在java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)[exec]在java.io .ObjectInputStream.readOrd inaryObject(ObjectInputStream.java:1732)[exec]在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)[exec]在java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)在网上。 net.spy.memcached.transcoders.SerializingTranscoder.decode中的spy.memcached.transcoders.BaseSerializingTranscoder.deserialize(BaseSerializingTranscoder.java:100)[exec](SerializingTranscoder.java:66)

我猜没有容易修复的方法,因为Grails使用自定义类加载器加载域类(我假设com.myapp.User类是域类)。 作为一种变通方法,你也可以只把存储在会话的用户的ID和使用的技术,像我描述这里找回它在每次请求。 这还将提供减少需要复制的会话大小的好处。

在开发环境中使用SpyMemcached时,我遇到相同的CNFE问题。 SpyMemcached的CNFE(ClassNotFoundException),主要由JVM中的multi ClassLoader生成。 搜索本文: http : //code.google.com/p/spymemcached/issues/detail?id=155 ,找到:

“我过去曾遇到这个问题,并且找到了解决方案。之所以发生,是因为使用类加载器加载了它的memcached客户端,而使用另一个类加载器加载了序列化的对象类。”

因此,就我而言,我只是将memcached-VERSION.jar从ext-lib dir移至app-lib dir(/ WEB-INF / lib)。 然后,memcached客户端和应用程序类都在同一个ClassLoader中,并且清除了此异常。

我只通过apache mod_proxy设置使用粘性会话,因此从未尝试过在节点之间共享会话数据。 这是您的选择吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM