Проблема диспетчера сеансов Memcached и Tomcat 8

Мы использовали Memcached для управления сессиями в нашем веб-приложении с Tomcat 7, и это сработало очень хорошо. Чтобы это работало, я добавил следующие банки в папку lib Tomcat.

  • spymemcached-2.8.12.jar
  • кушетки-клиент-1.1.4.jar
  • memcached-сессионный менеджер-tc7-1.6.5.jar
  • memcached-сессионный менеджер-1.6.5.jar

И сделал следующее изменение в server.xml Tomcat

<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, мне нужно обновить jar-файлы memcache для tomcat 8. поэтому я добавлен новый набор файлов jar в папку lib tomcat, как показано ниже.

  • spymemcached-2.11.1.jar
  • memcached-сессионный менеджер-tc8-1.8.1.jar
  • memcached-сессионный менеджер-1.8.1.jar
  • кушетки-клиент-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, он будет работать нормально, но с диспетчером сеансов memcache выдаст указанную выше ошибку. Я действительно могу использовать некоторую помощь здесь, чтобы решить эту проблему.

Спасибо


person dhaval tamboli    schedule 06.01.2016    source источник
comment
Вы пытались начать со свежей конфигурации tomcat 8 (server.xml и т. д.), добавив впоследствии конфигурацию msm? Можете ли вы также попробовать раннюю версию tomcat 8 (возможно, в последних выпусках были тонкие несовместимые изменения)?   -  person MartinGrotzke    schedule 09.01.2016


Ответы (1)


У меня была такая же проблема, и я застрял на 2 дня. Проблема с моей стороны заключалась в том, что у меня были нижеприведенные файлы jar для memcache в tomcat/lib и в другом пути к классам для конкретного проекта - tomcat/{project}/conf. Проблема была решена, когда я удалил эти банки из tomcat/{project}/conf

spymemcached-2.11.1.jar memcached-сессионный менеджер-tc8-1.8.1.jar

person Radhika    schedule 22.01.2016