ClassCastException

1,217 views
Skip to first unread message

blinder

unread,
Feb 16, 2011, 12:40:11 PM2/16/11
to memcached-session-manager
Hello, I just went through the setup and configuration (http://
code.google.com/p/memcached-session-manager/wiki/
SetupAndConfiguration)
and each time i try to start tomcat (Apache Tomcat/6.0.20 on mac
10.5.8) i get the following stack trace:

Caused by: java.lang.ClassCastException: class
de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
at java.lang.Class.asSubclass(Class.java:3018)
at
de.javakaffee.web.msm.MemcachedBackupSessionManager.loadTranscoderFactoryClass(MemcachedBackupSessionManager.java:
397)
at
de.javakaffee.web.msm.MemcachedBackupSessionManager.createTranscoderFactory(MemcachedBackupSessionManager.java:
382)
at
de.javakaffee.web.msm.MemcachedBackupSessionManager.getTranscoderFactory(MemcachedBackupSessionManager.java:
348)

I've tried other transcoder factory implementations (the built-in java
serializer, and javolution's) all result in the same class cast
exception.

Using memcached-session-manager-1.3.6.jar which is in CATALINE_HOME/
lib

My context looks like:

<Context path="/app-name">
<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
</Context>

i'm guessing i've missed something obvious but i'm just at a loss
right now. any help/guidance would be appreciated.

Martin Grotzke

unread,
Feb 16, 2011, 12:44:44 PM2/16/11
to memcached-se...@googlegroups.com

Can you try to remove the transcoderFactoryClass attribute?

Cheers,
Martin

Martin Grotzke

unread,
Feb 16, 2011, 1:09:50 PM2/16/11
to memcached-se...@googlegroups.com

The exception and posted configuration don't fit together. Can you check again and/or provide the complete log output?

Cheers,
Martin

Am 16.02.2011 18:41 schrieb "blinder" <blinde...@gmail.com>:

blinder

unread,
Feb 16, 2011, 12:56:52 PM2/16/11
to memcached-session-manager
Hi Martin,
yes, just tried that and i got this again:
Caused by: java.lang.ClassCastException: class
de.javakaffee.web.msm.JavaSerializationTranscoderFactory

my context now looks like:

<Context path="/app-name">
<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
/>
</Context>



On Feb 16, 12:44 pm, Martin Grotzke <martin.grot...@googlemail.com>
wrote:

martin.grotzke

unread,
Feb 16, 2011, 3:12:25 PM2/16/11
to memcached-session-manager
Please can you provide the complete log output?

You can also check out this sample and modify it so that I can
reproduce your issue:
https://github.com/magro/msm-sample-webapp/tree/simpleservlet

Cheers,
Martin

blinder

unread,
Feb 16, 2011, 4:37:54 PM2/16/11
to memcached-session-manager
ok, so i got past the ClassCastException. turns out it was all my
fault. i had downloaded the wrong version of msm (i had originally
1.4.0RC3). Changing that to the featured (1.3.6) fixed the
ClassCastException.

Now, however, it seems there's something odd with finding classes for
kryo. I'm currently getting:

Caused by: java.lang.ClassNotFoundException:
com.esotericsoftware.reflectasm.FieldAccess

my classpath (have tried both WEB-INF/lib and CATALINA_HOME/lib)
contains all required jar files including: reflectasm-0.9.jar (which
does indeed have FieldAccess)

strange.

On Feb 16, 3:12 pm, "martin.grotzke" <martin.grot...@googlemail.com>
wrote:

Martin Grotzke

unread,
Feb 16, 2011, 5:05:25 PM2/16/11
to memcached-se...@googlegroups.com
On Wed, Feb 16, 2011 at 10:37 PM, blinder <blinde...@gmail.com> wrote:
> ok, so i got past the ClassCastException. turns out it was all my
> fault. i had downloaded the wrong version of msm (i had originally
> 1.4.0RC3). Changing that to the featured (1.3.6) fixed the
> ClassCastException.
Strange, also with 1.4.0RC3 you shouldn't get the ClassCastException.
Can you check
https://github.com/magro/msm-sample-webapp/tree/simpleservlet
and tried to reproduce the issue with this setup?

>
> Now, however, it seems there's something odd with finding classes for
> kryo. I'm currently getting:
>
> Caused by: java.lang.ClassNotFoundException:
> com.esotericsoftware.reflectasm.FieldAccess
>
> my classpath (have tried both WEB-INF/lib and CATALINA_HOME/lib)
> contains all required jar files including: reflectasm-0.9.jar (which
> does indeed have FieldAccess)
>
> strange.

msm-kryo-serializer, kryo, reflectasm, asm etc. all have to be in
WEB-INF/lib and _must not_ exist in CATALINA_HOME/lib.

If this is the case for you probably the best is to change the
msm-sample-webapp until it also produces the issue you describe.

Cheers,
Martin

blinder

unread,
Feb 17, 2011, 2:48:04 PM2/17/11
to memcached-session-manager


On Feb 16, 5:05 pm, Martin Grotzke <martin.grot...@googlemail.com>
wrote:

> Strange, also with 1.4.0RC3 you shouldn't get the ClassCastException.
> Can you check
>  https://github.com/magro/msm-sample-webapp/tree/simpleservlet
> and tried to reproduce the issue with this setup?

I will give this is a shot, after i get this to work. heh, just
changing the version did seem to fix the casting exception. but yeah
i'll dig a little deeper into that one when time permits.


>
> msm-kryo-serializer, kryo, reflectasm, asm etc. all have to be in
> WEB-INF/lib and _must not_ exist in CATALINA_HOME/lib.

yes, this is absolutely the case. currently in my WEB-INF/lib i have:
asm-3.2.jar
kryo-1.-3.jar
kryo-serializers-0.8.jar
minlog-1.2.jar
msm-kryo-serializer-1.3.6.jar
reflectasm-0.9.jar

in CATALINA_HOME/lib i have:
memcached-session-manager-1.3.6.jar
memcached-2.5.jar

>
> If this is the case for you probably the best is to change the
> msm-sample-webapp until it also produces the issue you describe.

okay, hmmm, i'll give this a shot.

mil...@gmail.com

unread,
May 25, 2011, 7:40:00 AM5/25/11
to memcached-se...@googlegroups.com
I got this ex. again under v.1.4.1,any advice? If I left the transcoderFactoryClass not configured(default value),it works fine

/tomcat/lib
memcached-2.5.jar
memcached-session-manager-1.4.1.jar

/tomcat/webapp/app/WEB-INF/lib
msm-kryo-serializer-1.4.1.jar
reflectasm-0.9.jar
kryo-1.03.jar
minlog-1.2.jar
asm-3.2.jar
kryo-serializers-0.8.jar

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:localhost:11211"
     sessionBackupAsync="false"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
 customConverter="de.javakaffee.web.msm.serializer.kryo.CGLibProxySerializerFactory,de.javakaffee.web.msm.serializer.kryo.HibernateCollectionsSerializerFactory"
   />



INFO: MemcachedBackupSessionManager starts initialization... (configured nodes definition n1:localhost:11211, failover nodes null)
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.SessionTrackerValve <init>
INFO: Setting ignorePattern to .*\.(ico|png|gif|jpg|css|js)$
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.SessionTrackerValve getSessionCookieName
FINE: Using session cookie name from context: JSESSIONID
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager setLockingMode
INFO: Setting lockingMode to null
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager createTranscoderFactory
INFO: Creating transcoder factory de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager loadTranscoderFactoryClass
FINE: Loading transcoder factory class de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory using classloader WebappClassLoader
  context: /manager
  delegate: false
  repositories:
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@10c832d2

May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager loadTranscoderFactoryClass
INFO: Could not load transcoderfactory class with classloader WebappClassLoader
  context: /manager
  delegate: false
  repositories:
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@10c832d2
, trying org.apache.catalina.loader.StandardClassLoader@10c832d2
May 25, 2011 7:19:49 PM org.apache.catalina.core.StandardContext start
SEVERE: Error manager.start()
java.lang.RuntimeException: Could not create transcoder factory.
at de.javakaffee.web.msm.MemcachedBackupSessionManager.getTranscoderFactory(MemcachedBackupSessionManager.java:350)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.createTranscoderService(MemcachedBackupSessionManager.java:342)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.startInternal(MemcachedBackupSessionManager.java:307)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.start(MemcachedBackupSessionManager.java:1454)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4713)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.loadTranscoderFactoryClass(MemcachedBackupSessionManager.java:400)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.createTranscoderFactory(MemcachedBackupSessionManager.java:382)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.getTranscoderFactory(MemcachedBackupSessionManager.java:348)
... 26 more
May 25, 2011 7:19:49 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/manager] startup failed due to previous errors
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager stop
INFO: Removing sessions from local session map.
May 25, 2011 7:19:49 PM de.javakaffee.web.msm.MemcachedBackupSessionManager stop
INFO: Stopping services.
May 25, 2011 7:19:49 PM org.apache.catalina.core.StandardContext start
SEVERE: Exception during cleanup after start failed
java.lang.NullPointerException
at de.javakaffee.web.msm.MemcachedBackupSessionManager.stop(MemcachedBackupSessionManager.java:1487)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4875)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4749)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
May 25, 2011 7:19:49 PM org.apache.tomcat.util.modeler.Registry registerComponent
SEVERE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/manager,J2EEApplication=none,J2EEServer=none
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[Status] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[jsp] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[default] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[HTMLManager] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[JMXProxy] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].[Manager] has not been started
May 25, 2011 7:19:49 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
LifecycleException:  Manager has not yet been started
at de.javakaffee.web.msm.MemcachedBackupSessionManager.stop(MemcachedBackupSessionManager.java:1468)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4875)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4777)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
May 25, 2011 7:19:49 PM org.apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory manager
java.lang.IllegalStateException: ContainerBase.addChild: start: LifecycleException:  Manager has not yet been started
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:803)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
May 25, 2011 7:19:49 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8081
May 25, 2011 7:19:49 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8010
May 25, 2011 7:19:49 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/65  config=null
May 25, 2011 7:19:49 PM org.apache.catalina.startup.Catalina start

Martin Grotzke

unread,
May 25, 2011, 12:01:24 PM5/25/11
to memcached-se...@googlegroups.com
Hi,

On 05/25/2011 01:40 PM, mil...@gmail.com wrote:
[snip]


> FINE: Loading transcoder factory class
> de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory using
> classloader WebappClassLoader
> context: /manager

This tells me that this problem occurs when the /manager context is
started. The (standard tomcat) manager context does not have the
required libs in the classpatch (WEB-INF/lib), only when the default
transcoderFactory is set, it's available as it's in the msm core jar
located in $CATALINA_HOME/lib.

When your webapp (assuming it's not /manager) is deployed these errors
should not occur.

I see two options:
1) Remove all other webapps (/examples, /manager etc.)
2) Configure msm only for your desired context (see
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html).

Cheers,
Martin

signature.asc

fff

unread,
May 26, 2011, 2:50:54 AM5/26/11
to memcached-se...@googlegroups.com
Thanks a lot,fixed :)  

>>L.F.

Martin Grotzke

unread,
May 26, 2011, 5:07:25 AM5/26/11
to memcached-se...@googlegroups.com, fff
On 05/26/2011 08:50 AM, fff wrote:
> Thanks a lot,fixed :)
Ok, great!

Cheers,
Martiun


ps I had to approve your emails in google groups (due to necessary spam
protection settings), so if you want to be able to write directly to the
group (without being moderated) you should subscribe. An advantage of
this is that you'll also get release announcements.

signature.asc
Reply all
Reply to author
Forward
0 new messages