tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Angel Todorov" <attodo...@gmail.com>
Subject Re: using JNDI to share object reference between two apps
Date Thu, 15 Feb 2007 14:56:36 GMT
Hi,

Yes only the interfaces should share the common classloader, What i
meant is that the implementation can come from any service provider
impl.

Best,
Angel

On 2/15/07, David Delbecq <delbd@oma.be> wrote:
> En l'instant précis du 02/15/07 15:39, Caldarale, Charles R s'exprimait
> en ces termes:
> >> From: Angel Todorov [mailto:attodorov@gmail.com]
> >> Subject: Re: using JNDI to share object reference between two apps
> >>
> >> Does tomcat perform explicit serialization of everything, even if JNDI
> >> is used locally on the same JVM ?
> >>
> >
> > This has nothing to do with serialization; no serialization is occuring
> > - only references to objects are stored here.
> >
> >
> >> Sure the producer (bind) and the consumer (lookup) will
> >> use the same interface, but the producer doesn't have to
> >> care about the classes used "behind" that interface,
> >>
> >
> >
> My experience have shown that, if you only use interfaces and the
> interfaces are in the same class loader, the actual classes do no matter.
>
> Example (using classloader documentation):
>
>           Bootstrap
>               |
>            System
>               |
>            Common
>           /      \
>      Catalina   Shared  <-- contains interface X
>                  /   \
>             Webapp1  Webapp2 ...
>               ^
>               |
>               --- contains implementation Y of interface X
>
> Webapp2 can do safetly a
> X sharedX = (X)objectGottenFromGlobalContext;
>
> However, doing this will throw exception because different loaders
>
> Y sharedY = (Y)objectGottenFromGlobalContext;
>
> I have done a pretty similar operation here, except, in my case, interface X was in Common
and the implementation was in Catalina
> (X was a subclass of Principal that stored user password, my Realm was producing it and
my webapp was consuming it)
>
>
>
> > The producer and consumer most definitely *DO* have to care about the
> > classes used.  The same class loaded by the same classloader must be
> > visible to both webapps.  Consequently, that class will have to reside
> > in shared/lib, common/lib, or be one supplied by the JRE.  Classes
> > inside WEB-INF/lib are only visible to that particular webapp, even if
> > they have the same name as a class used in another webapp.
> >
> > Read the classloader doc:
> > http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html
> >
> >  - Chuck
> >
> >
> > THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY
> > MATERIAL and is thus for use only by the intended recipient. If you
> > received this in error, please contact the sender and delete the e-mail
> > and its attachments from all computers.
> >
> > ---------------------------------------------------------------------
> > To start a new topic, e-mail: users@tomcat.apache.org
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To start a new topic, e-mail: users@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