在解决nginx+tomcat+memcached集群session的问题中,我在本机(Windows)测试,nginx+2个tomcat,将memcached添加到系统服务中并启动,分别添加memcached的jar包到tomcat的lib中,配置两个tomcat的context.xml,启动两个tomcat,访问页面报错,起初以为是版本的问题,换了好多版本的jar包,问题依旧,求高人指点。
context.xml配置如下:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:127.0.0.1:11211" requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" />
错误信息如下:
java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture; at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:227) at de.javakaffee.web.msm.BackupSessionTask.doBackupSession(BackupSessionTask.java:194) at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:119) at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:50) at de.javakaffee.web.msm.BackupSessionService$SynchronousExecutorService.submit(BackupSessionService.java:346) at de.javakaffee.web.msm.BackupSessionService.backupSession(BackupSessionService.java:205) at de.javakaffee.web.msm.MemcachedSessionService.backupSession(MemcachedSessionService.java:1059) at de.javakaffee.web.msm.RequestTrackingHostValve.backupSession(RequestTrackingHostValve.java:229) at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:154) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
我感觉jar文件中的方法重复了。######回复 @IceRainYWC : 有可能jar之间冲突,也有可能和源码中的冲突了。######我试了试,好像不是jar文件中的方法重复。######
tomcat 版本多少? 这个问题好像网上挺多。
######Tomcat 6.0######我也遇到了同样的问题,正在解决。###### 用这个 spymemcached-2.8.4.jar 不用 memcached-2.6.jar ,昨天晚上使出来的,第一个没有问题,第二个就会报你的这个错 ######回复 @海空天阔007 : 删掉memcached 2.6.留 下spymemcache-2.8.4.jar或更高版本 是包冲突 了######为啥我这改成你这样了还报这个错呢######麻烦问下,你们这个多次刷新,sessionId不会变吗?
为什么我的页面,链接快速F5刷新,sessionId就会改变呢.
######我的也是常按F5 sessionid也会变.............你的问题解决了没有............######麻烦问下,你们这个多次刷新,sessionId不会变吗?
为什么我的页面,链接快速F5刷新,sessionId就会改变呢.
这个没试过,不太清楚,但是你Tomcat做集群的话SessionId应该是同步的不会变的。
麻烦问下,你们这个多次刷新,sessionId不会变吗?
为什么我的页面,链接快速F5刷新,sessionId就会改变呢.
这个没试过,不太清楚,但是你Tomcat做集群的话SessionId应该是同步的不会变的。
我也感觉比较奇怪,我在47,48上部署了两个tomcat,和两个memcached,然后轮流关闭47,48,然后ctrl+F5刷新页面,seseion为这样:
6354E39FE644EA4D3B4C28755E6E87D0-n47.jvm47
B2909ECCDA90D7F97D3CCCF3F8175A0E-n48.jvm48
C3A6A59D251CFE7D8E3241E9FAE649B1-n47.jvm47
大家认为这正常吗
麻烦问下,你们这个多次刷新,sessionId不会变吗?
为什么我的页面,链接快速F5刷新,sessionId就会改变呢.
我是Tomcat7配置也出现了楼主同样的问题,请问楼主解决了没?我的情况是第一次用页面访问就会报这个错,以后就不报错了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。