Re: [memcached-session-manager] does memcached-session-manager run only under a unix based system?

102 views
Skip to first unread message

Thomas Andraschko

unread,
Apr 16, 2012, 1:35:06 PM4/16/12
to memcached-se...@googlegroups.com
Hi,

you need a memcached or compatible server, yes.
Our application runs on windows and we use couchbase with memcached compatible store.
If you create an store, you can use couchbase protocoll or memcached protocoll.

Regards,
Thomas

2012/4/16 choesang <tcho...@gmail.com>
I am following this setup guide:
http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
and I am going nuts trying to configure 2 tomcats with memcached-
session-manager.
I just saw that memcached itself is installable only under linux.
do I need a runnig memcached to have memcached-session-manager
working?

choesang

unread,
Apr 17, 2012, 10:21:40 AM4/17/12
to memcached-se...@googlegroups.com
Thanks for pushing me towards the right direction. I am working on windows with 2 tomcats runnin gon 8081 and 8082.

I have the following questions

1. I get ClassNotFoundException for  de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory, even though i have msm-kyro.jar in my WEB-INF/lib folder?

2. Is there any possibility to see the serialized session in couchbase? I would like to see how big are the sessions?

3. how does it work when both nodes (n1 and n2) are listening at the same port?


Configuration:

1. Installed couchbase (1.8.0 for 64bit) and created a new cluster (wtih type memcached) and it is running at http://localhost:8091/index.html

2. droped the following jars in $CATALINA_HOME/lib/ (tomcat 7.0.27)
  • memcached-session-manager-1.6.1.jar
  • memcached-session-manager-tc7-1.6.1.jar
  • spymemcached-2.8.1.jar
3. context.xml: 
   
  <Manager 
      className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  memcachedNodes="n1:localhost:11211 n2:localhost:11211"
  sticky="false"
  sessionBackupAsync="false"
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>

4. WEB-INF/lib
    <dependency>
     <groupId>de.javakaffee.msm</groupId>
     <artifactId>msm-kryo-serializer</artifactId>
     <version>1.6.1</version>
     <scope>runtime</scope>
  </dependency>

Thomas Andraschko

unread,
Apr 17, 2012, 10:30:35 AM4/17/12
to memcached-se...@googlegroups.com
Hi,

1) AFAIK the libs must be in Tomcat/lib, not in your app under WEB-INF/lib.
For Kryo, you need all this dependencies as stated in the docu: kryo-serializer: msm-kryo-serializer, kryo-serializers, kryo, minlog, reflectasm, asm-3.2

2) Don't know. We are currently NOT in production and just on our test server. If you find it, please share it - it's interessting for us, too.

3) What exactly do you mean? Why do you want to install 2 couchbase on 1 server? IMO 1 node should be enough then.

Regards,
Thomas


2012/4/17 choesang <tcho...@gmail.com>

choesang

unread,
Apr 17, 2012, 12:07:04 PM4/17/12
to memcached-session-manager
Thank you Thomas!
Now I am able to use the kyro serializer after moving the jars in
TOMCAT/lib.
On authenticating to the application, it throws a "500 Internal Server
Error". I am getting NullPointerException and is unable to load
session from memcached.
Does it mean that there is a deserialization problem?


Apr 17, 2012 5:54:06 PM de.javakaffee.web.msm.MemcachedSessionService
loadFromMemcached
WARNING: Could not load session with id
3765F39DD485912B168B02CC24FF14DA-n2 from memcached.
java.lang.NullPointerException
at java.util.HashMap.put(HashMap.java:373)
at
com.esotericsoftware.kryo.serialize.MapSerializer.readObjectData(MapSerializer.java:
130)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:
566)
at
com.esotericsoftware.kryo.serialize.MapSerializer.readObjectData(MapSerializer.java:
129)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:
566)
at
com.esotericsoftware.kryo.serialize.MapSerializer.readObjectData(MapSerializer.java:
129)
at
com.esotericsoftware.kryo.Serializer.readObject(Serializer.java:61)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:589)
at
com.esotericsoftware.kryo.ObjectBuffer.readObject(ObjectBuffer.java:
213)
at
de.javakaffee.web.msm.serializer.kryo.KryoTranscoder.deserializeAttributes(KryoTranscoder.java:
256)
at
de.javakaffee.web.msm.TranscoderService.deserializeAttributes(TranscoderService.java:
159)
at
de.javakaffee.web.msm.TranscoderService.deserialize(TranscoderService.java:
116)
at
de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached(MemcachedSessionService.java:
1027)
at
de.javakaffee.web.msm.MemcachedSessionService.findSession(MemcachedSessionService.java:
578)
at
de.javakaffee.web.msm.MemcachedBackupSessionManager.findSession(MemcachedBackupSessionManager.java:
19
at
org.apache.catalina.connector.Request.doGetSession(Request.java:2850)
at
org.apache.catalina.connector.Request.getSession(Request.java:2307)
at
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:
898)
at
javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:
229)
at
org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.jav
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:3
at
it.unibz.ict.utils.RetainAnchorFilter.doFilter(RetainAnchorFilter.java:
49)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:3
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:
173)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:
346)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:
259)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
225)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
169)
at
de.javakaffee.web.msm.SessionTrackerValve.invoke(SessionTrackerValve.java:
126)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:
999)
at org.apache.coyote.AbstractProtocol
$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint
$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Thomas Andraschko

unread,
Apr 17, 2012, 12:54:00 PM4/17/12
to memcached-se...@googlegroups.com
Which application stack do you use? Can you try with JavaSerializer first?

2012/4/17 choesang <tcho...@gmail.com>

Martin Grotzke

unread,
Apr 17, 2012, 4:14:38 PM4/17/12
to memcached-se...@googlegroups.com
On 04/17/2012 04:30 PM, Thomas Andraschko wrote:
> Hi,
>
> 1) AFAIK the libs must be in Tomcat/lib, not in your app under WEB-INF/lib.
> <http://repo1.maven.org/maven2/de/javakaffee/msm/msm-kryo-serializer/>For Kryo,

> you need all this dependencies as stated in the docu: kryo-serializer:
> msm-kryo-serializer
> <http://repo1.maven.org/maven2/de/javakaffee/msm/msm-kryo-serializer/>,
> kryo-serializers
> <http://repo1.maven.org/maven2/de/javakaffee/kryo-serializers/>, kryo
> <http://repo1.maven.org/maven2/com/googlecode/kryo/>, minlog
> <http://repo1.maven.org/maven2/com/googlecode/minlog/>, reflectasm
> <http://repo1.maven.org/maven2/com/googlecode/reflectasm/>, asm-3.2
> <http://repo1.maven.org/maven2/asm/asm/3.2/>

I'd recommend to add msm-kryo-serializer (and dependencies) dependency
to WEB-INF/lib. If it's placed in tomcat/lib one might get exceptions as
soon as classes from the webapp (WEB-INF/{lib,classes}) are
serialized/deserialized.

If there are classloader issues I'd also suggest to remove the
transcoderFactoryClass attribute from the configuration so that the
default serializer (java) will be used - as you suggest in your last
mail, Thomas.

As soon as everything else is fine one can check out kryo again.

>
> 2) Don't know. We are currently NOT in production and just on our test
> server. If you find it, please share it - it's interessting for us, too.

Not sure about couchbase stats.

msm publishes some statistics via jmx (msmStatCachedDataSizeInfo for
serialized session size):
http://code.google.com/p/memcached-session-manager/wiki/JMXStatistics

>
> 3) What exactly do you mean? Why do you want to install 2 couchbase on 1
> server? IMO 1 node should be enough then.

Btw, msm also supports membase buckets, so one can e.g. use
memcachedNodes="http://localhost:8091/pools", username="default" and
password="" for the "default" membase bucket (SetupAndConfiguration page
provides more details).

Cheers,
Martin

signature.asc

choesang

unread,
Apr 18, 2012, 6:53:20 AM4/18/12
to memcached-se...@googlegroups.com
I have mvn dependencies for kryo and jettison in my pom.xml and the related jars are in my deployed application. but when i try to use either kryo as my serializer or try using membase bucket I get ClassNotFoundExcpetion.

Caused by: java.lang.ClassNotFoundException: de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
at org.aspectj.weaver.bcel.ExtensibleURLClassLoader.findClass(ExtensibleURLClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at de.javakaffee.web.msm.MemcachedSessionService.loadTranscoderFactoryClass(MemcachedSessionService.java:532)
at de.javakaffee.web.msm.MemcachedSessionService.createTranscoderFactory(MemcachedSessionService.java:514)
at de.javakaffee.web.msm.MemcachedSessionService.getTranscoderFactory(MemcachedSessionService.java:455)
Caused by: java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONException
at net.spy.memcached.vbucket.ConfigurationProviderHTTP.<init>(ConfigurationProviderHTTP.java:50)
at net.spy.memcached.MemcachedClient.<init>(MemcachedClient.java:257)
at net.spy.memcached.MemcachedClient.<init>(MemcachedClient.java:219)
at net.spy.memcached.MemcachedClient.<init>(MemcachedClient.java:343)
at de.javakaffee.web.msm.MemcachedSessionService.createMemcachedClient(MemcachedSessionService.java:474)
at de.javakaffee.web.msm.MemcachedSessionService.startInternal(MemcachedSessionService.java:413)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.startInternal(MemcachedBackupSessionManager.java:509)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

Any ideas?

Application stack:

Hibernate (3.6.10.Final), Spring (3.1.1.RELEASE),Spring AOP, JSF(2.0), Richfaces (4.1.0.Final)

Martin Grotzke

unread,
Apr 19, 2012, 2:57:31 AM4/19/12
to memcached-se...@googlegroups.com
Please list the content of tomcat/lib and WEB-INF/lib.

Cheers,
Martin


On 04/18/2012 12:53 PM, choesang wrote:
> I have mvn dependencies for kryo and jettison in my pom.xml and the
> related jars are in my deployed application. but when i try to use

> either *kryo as my serializer* or try *using membase bucket *I get

--
Brakhane, Grotzke und Langbehn Informatiker und Physiker PartG
Breitenfelder Str. 13c, 20251 Hamburg
Amtsgericht Hamburg, PR 795

signature.asc

choesang

unread,
Apr 19, 2012, 12:37:49 PM4/19/12
to memcached-se...@googlegroups.com

TOMCAT/lib



WEB-INF/lib


Martin Grotzke

unread,
Apr 19, 2012, 1:35:30 PM4/19/12
to memcached-se...@googlegroups.com

Please move jettison (and its deps if any) to tomcat/lib.

Cheers,
Martin

Am 19.04.2012 18:37 schrieb "choesang" <tcho...@gmail.com>:

TOMCAT/lib



WEB-INF/lib


Reply all
Reply to author
Forward
0 new messages