xmemcached在Tomcat下启动后,再reload的时候总抛出空指针
donaldtrump
2010-06-24
[quote="dennis_zane]
你将你的配置贴出来看下吧,xmc这块。 配置跟手册上一模一样,我把server's weights去掉,memcached装在本地,也按照dengjie200说的使用文本协议,上面的错误堆栈在修改代码重新发布后会一直不停的出现,另外谢谢dennis_zane的耐心 <bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"> <property name="servers"> <value>127.0.0.1:11211</value> </property> <!-- nio connection pool size --> <property name="connectionPoolSize" value="2"></property> <!-- Use binary protocol,default is TextCommandFactory --> <property name="commandFactory"> <bean class="net.rubyeye.xmemcached.command.TextCommandFactory"></bean> </property> <!-- Distributed strategy --> <property name="sessionLocator"> <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean> </property> <!-- Serializing transcoder --> <property name="transcoder"> <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" /> </property> <!-- ByteBuffer allocator --> <property name="bufferAllocator"> <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean> </property> </bean> |
|
dennis_zane
2010-06-24
你换成了文本协议,现在堆栈应该跟以前不一样吧,你最好将完整的堆栈发出来,并且说下你的xmemcached和memcached的版本,我好测试,看看能不能重现。
|
|
donaldtrump
2010-06-24
换成文本协议之后还是一样的错误堆栈,xmemcached用的是xmemcached-1.2.4-bugfix.jar 下载链接是:http://code.google.com/p/xmemcached/downloads/list,memcached是windows1.4.4版,下载链接是:http://labs.northscale.com/memcached-packages/ Windows, (32-bit) zip file版
|
|
dennis_zane
2010-06-24
堆栈不可能是一样的,文本协议的心跳检测命令跟二进制协议的心跳检测命令完全不同,你确认下吧。
|
|
dennis_zane
2010-06-24
你可以暂时关闭心跳检测看看效果
memcachedClient.setEnableHeartBeat(false); |
|
dennis_zane
2010-06-24
这个问题我估计是由于ClassLoader的类加载引起的,tomcat做类的热部署,要先卸载类,那么IoBuffer被卸载之后,静态变量BufferAllocator找不到,因此报个NPE的异常。
|
|
donaldtrump
2010-06-25
dennis_zane 写道 你可以暂时关闭心跳检测看看效果
memcachedClient.setEnableHeartBeat(false); bingo,加了这句之后就没有出现了 |
|
donaldtrump
2010-06-25
我关闭心跳检测后会影响memcached的效率吗?
还是开发的时候关掉,部署到服务器的时候打开? 问题总算找到了,谢谢dennis_zane 百忙之中热心解答 |
|
dennis_zane
2010-06-28
donaldtrump 写道 我关闭心跳检测后会影响memcached的效率吗?
还是开发的时候关掉,部署到服务器的时候打开? 问题总算找到了,谢谢dennis_zane 百忙之中热心解答 我是建议测试的memcached也是linux版本,官方也只提供*nix版本,线上同样建议开启心跳检测,为了及时发现连接异常。 |