2016-01-06 86 views
0

我們在Tomcat 7的Web應用程序中使用Memcached進行會話管理,它的工作非常有用。爲了爲它工作,我添加以下jar文件到Tomcat的lib文件夾Memcached和Tomcat 8會話管理器問題

  • spymemcached-2.8.12.jar
  • couchbase-客戶1.1.4.jar
  • memcached的會話管理器,tc7- 1.6.5.jar
  • memcached的會話管理器-1.6.5.jar

並作了如下修改到Tomcat的server.xml

<Context path="customersupport" docBase="customerSupportOrderCentral#v2" sessionCookieName="CUSTOMERSUPPORT-JSESSIONID"> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
memcachedNodes="n1:oc-cs-elasticcache.w8eptf.cfg.usw1.cache.amazonaws.com:11211" 
sticky="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" /> 
</Context> 

現在我們正在將我們的JDK升級到1.8,Tomcat版本升級到8.我一直在爲它進行在線研究,事實證明,因爲tomcat 8不支持getSessionCookieName,我必須更新用於tomcat 8的memcache jar文件所以我在tomcat的lib文件夾中添加了一組新的jar文件,如下所示。

  • spymemcached-2.11.1.jar
  • memcached的會話管理器,tc8-1.8.1.jar
  • memcached的會話管理器-1.8.1.jar
  • couchbase,客戶端 - 1.4.0.jar

和現在的server.xml一樣,但現在Tomcat啓動時出現跟着錯誤。

06-Jan-2016 07:03:48.934 SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw error 
java.lang.NoClassDefFoundError: org/apache/catalina/Lifecycle 
    at java.lang.ClassLoader.findBootstrapClass(Native Method) 
    at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1012) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:413) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:116) 
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1178) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:766) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1344) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2787) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) 
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1451) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:551) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:599) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484) 

如果我不改變server.xml中包括內存緩存管理器,工作正常,但與memcache的會話管理器,它拋出上述錯誤。我真的可以在這裏用一些幫助來解決這個問題。

謝謝

+0

你有沒有試過從一個新的tomcat 8配置(server.xml等)後添加msm配置?你還可以嘗試早期版本的tomcat 8(也許在最新版本中有微妙的不兼容變化)? – MartinGrotzke

回答

1

我有同樣的問題,並陷入了2天。我最後的問題是我在tomcat/lib和另一個項目特定的類路徑中有下面的memcache特定的jar - tomcat/{project}/conf。當我從Tomcat /(項目)/ conf目錄刪除了這些瓶子的問題得到了解決

spymemcached-2.11.1.jar memcached的會話管理器,tc8-1.8.1.jar memcached的會話管理器,1.8 .jar