tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reinwald Warapen <reinwal...@directi.com>
Subject Re: Why cant the the classes (in the jars) places in Tomcat/lib see the classes from the webapp/WEB-INF/lib.
Date Thu, 20 Jan 2011 13:24:41 GMT
On 1/20/2011 2:54 PM, Martin Grotzke wrote:
> Hi,
>
> I just got pinged by Reinwald (we're already on contact via email) regarding
> this issue. I created the memcached-session-manager (
> http://code.google.com/p/memcached-session-manager/ ) for which Reinwald is
> trying to create a custom serializer/transcoder (memcached-session-manager,
> msm, basically additionally uses memcached as additional session backup
> store where session can be loaded from in the case of a tomcat/hardware
> crash).
>
> I just signed up here on nabble to be able to get into the thread, therefore
> quoting is not that good / I'm top posting.
>
> Now let me try to clarify how msm works regarding
> serialization/classloading.
>
> It is a Manager which is configured as usual via context.xml/server.xml. It
> supports standard java serialization but also other pluggable serializers
> like e.g. kryo (faster than java serialization). For kryo the manager
> configuration accepts custom serializer class names. The basic kryo
> serializer and the specified custom serializers are loaded during
> Manager.init like this:
>
> ClassLoader cl = manager.getContainer().getLoader().getClassLoader()
> Class.forName( customSerializerClassName, true, cl )
>
> The msm jar is placed in tomcat's lib dir, the kryo serializer jar, required
> kryo jar (and friends) and all application related jars are living in the
> webapps WEB-INF/lib directory.
>
> This works, there's also a sample app on github (
> https://github.com/magro/msm-sample-webapp ) with a runtime directory
> containing a tomcat installation and a sample webapp (linked in webapps,
> available after building the war).
>
> @Reinwald: I assume you're trying to get kryo custom serializers up and
> running, right? Have you placed kryo jars, msm-kryo-serializer jar and your
> custom serializer jar / classes in your WEB-INF/lib directory?
>
> Cheers,
> Martin
@Martin :Actually I was trying to write my own Session Manager since i 
wanted to store the session into mysql. The issue was when deserializing 
Tomcat could not find the classes since the objects stored in the 
sessions are related to my web-app.
Reading the docs I found another solution which worked in my case 
http://wiki.apache.org/tomcat/HowTo#How_do_I_add_JARs_or_classes_to_the_common_classloader_without_adding_them_to_.24CATALINA_HOME.2BAC8-common.2BAC8-lib.3F

@ All : Also wanted to mentioned that the memcached-session-manager 
which Martin has created is an awesome idea if you want to back up 
sessions to memcache.
>
>
> Christopher Schultz-2 wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Mark,
>>
>> On 1/19/2011 2:27 PM, Reinwald Warapen wrote:
>>> On 1/20/2011 12:47 AM, Mark Thomas wrote:
>>>> On 19/01/2011 19:17, Reinwald Warapen wrote:
>>>>> I am writing a serializer/deserializer functionality (used in my custom
>>>>> session manager that extends ManagerBase). When deserializing I get
>>>>> loads of java.lang.ClassNotFoundException: exceptions. All the classes
>>>>> for which the exceptions are thrown can be found in my
>>>>> webapp/WEB-INF/classes. How do I configure it such that the
>>>>> webapp/WEB-INF/classes are visible to the libs placed in Tomcat/lib.?
>>>> http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
>>> I did go through this before posting here. Its mentioned "All unpacked
>>> classes and resources in |$CATALINA_HOME/lib|, as well as classes and
>>> resources in JAR files are made visible through this class loader". But
>>> theres no mention about the visibility of the webapp/WEB-INF/classes to
>>> the classes in |$CATALINA_HOME/lib.So is there no way to configure the
>>> same?
>> Pretty much no.
>>
>> Tomcat can deserialize your webapp's sessions after a redeploy because
>> it uses the webapp's ClassLoader to resolve everything. In your case,
>> you have no way to get to the webapp's ClassLoader so you are pretty
>> much stuck.
>>
>> What kind of serialization/deserialization are you writing? Why is this
>> running at the Tomcat level instead of within your webapp?
>>
>> - -chris
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.10 (MingW32)
>> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>>
>> iEYEARECAAYFAk03a0wACgkQ9CaO5/Lv0PBikgCfYuyPaY/XyqkiPJP7MtqVsSCW
>> PkYAmgP7lRbxvV7ilDeKTV4BJwQKEmui
>> =dkUe
>> -----END PGP SIGNATURE-----
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message