zzyugl / xmemcached

Automatically exported from code.google.com/p/xmemcached
Apache License 2.0
0 stars 0 forks source link

tomcat 集群 session共享 采用xmemcached时遇到的问题 #211

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
tomcat context.xml中配置了
 <Manager className="net.cc.mem.MemcachedManager" address="192.168.0.182:11211:1,192.168.0.182:11212:1,192.168.0.182:11213:1"/>
MemcachedManager为自定义的sessionManager,通过继承tomcat提供的Manager
Base实现了会话共享,不同节点的tomcat只要能从memcached中获得之
前的session就不创建新的session对象,功能已经实现了,现在就是�
��到了 反序列化自定义对象的问题.

由于该xmemcached.jar放在tomcat的lib下,当遇到自定义对象反序列��
�时会抛出异常.
具体情况见:

219156 [http-8080-exec-2] ERROR 
net.rubyeye.xmemcached.transcoders.BaseSerializingTranscoder - Caught CNFE 
decoding 1347 bytes of data
java.lang.ClassNotFoundException: com.myfun7.Test
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

Original issue reported on code.google.com by cwenchao...@163.com on 8 Aug 2012 at 10:06

GoogleCodeExporter commented 9 years ago
这个问题跟xmc没有太大关系了,你要做的是保证这个类在所��
�节点上都存在。

或者不用默认的java序列化,而是采用自定义的文本序列化,�
��json,当找不到类的时候反序列化为map。

Original comment by killme2...@gmail.com on 8 Aug 2012 at 12:20

GoogleCodeExporter commented 9 years ago
我希望能够提供一个返回byte[]的get方法,这样的话,我可以在具
体的应用中才把byte[]反序列化为一个对象,就可以解决在tomcat 
lib下达到整个tomcat下的项目都可以通用,而不是把所有需要反�
��列化的类都加载到tomcat到lib目录下

Original comment by cwenchao...@163.com on 10 Aug 2012 at 3:42

GoogleCodeExporter commented 9 years ago
不会提供一个专门用于返回byte[]数组的方法。不过你可以自��
�义Transcoder,不做反序列化,直接返回byte 
[]数组,同样达到目的。

Original comment by killme2...@gmail.com on 12 Aug 2012 at 3:04