You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Caldarale, Charles R" <Ch...@unisys.com> on 2008/10/24 22:47:08 UTC

RE: How can I use a class in javax package from the jar file in WEB-INF/lib instead of the one in common/lib.

> From: Kevin SeongHyun Lee [mailto:public.class.kevin@gmail.com]
> Subject: Re: How can I use a class in javax package from the
> jar file in WEB-INF/lib instead of the one in common/lib.
>
> I believe, if a class is in java or javax package it might not
> be loaded from the libraries in the WEB-INF/lib directory first
> but the common/lib one

Not true; WEB-INF/lib is searched before common/lib.  However, if a class has already been loaded via the common/lib classloader, it may prevent use of the one in the webapp's jars.

> as mentioned in the FAQ
> found from the following link.
> http://ws.apache.org/axis/faq.html#faq5
>
> "*Why do some classes fail to load under Tomcat?*
>
> Tomcat will not load classes with package names starting
> "java." or "javax."
> from the WEB-INF directory. jars containing such classes need to be
> installed in $TOMCAT_HOME/common/lib rather than in
> WEB-INF/lib. Currently
> (April 25, 2002) jaxrpc.jar is such a jar."

Note the date - 6.5 years old, and no longer accurate (possibly not ever accurate), at least not as written.  Tomcat will happily load java.* or javax.* classes from WEB-INF/lib, but will ignore any jars containing either of these classes:
  javax.servlet.Servlet
  javax.servlet.jsp.JspPage

Here's the real info on Tomcat 5.5 classloading:
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


Re: How can I use a class in javax package from the jar file in WEB-INF/lib instead of the one in common/lib.

Posted by Kevin SeongHyun Lee <pu...@gmail.com>.
Oh, that makes perfect sense. Thanks Chuck.

Regards,
Kevin



2008/10/25 Caldarale, Charles R <Ch...@unisys.com>

> > From: Kevin SeongHyun Lee [mailto:public.class.kevin@gmail.com]
> > Subject: Re: How can I use a class in javax package from the
> > jar file in WEB-INF/lib instead of the one in common/lib.
> >
> > Even if it is loaded first, I believe, it should work
> > as both libraries are the same javamail
>
> What frequently happens is that some classes get loaded from both jars, but
> since they're under different classloaders, the JVM treats them as different
> classes.  When code in one class tries to utilize instances created from the
> other classloader, it can't, since the "instance of" operation fails.
>
> > Does anyone know how to solve this without removing any files?
>
> I don't.
>
>  - 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
>
>

RE: How can I use a class in javax package from the jar file in WEB-INF/lib instead of the one in common/lib.

Posted by "Caldarale, Charles R" <Ch...@unisys.com>.
> From: Kevin SeongHyun Lee [mailto:public.class.kevin@gmail.com]
> Subject: Re: How can I use a class in javax package from the
> jar file in WEB-INF/lib instead of the one in common/lib.
>
> Even if it is loaded first, I believe, it should work
> as both libraries are the same javamail

What frequently happens is that some classes get loaded from both jars, but since they're under different classloaders, the JVM treats them as different classes.  When code in one class tries to utilize instances created from the other classloader, it can't, since the "instance of" operation fails.

> Does anyone know how to solve this without removing any files?

I don't.

 - 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


Re: How can I use a class in javax package from the jar file in WEB-INF/lib instead of the one in common/lib.

Posted by Kevin SeongHyun Lee <pu...@gmail.com>.
Hey, Chuck.

Thanks :D

I read that tomcat doc as well yet missed that. I probably didn't really pay
attention. :( Thank you. :)

Yeah, I think you're right. After I said common/lib one is loaded first, I
found something weird. Even if it is loaded first, I believe, it should work
as both libraries are the same javamail (but different versions).

There is probably some kind of conflict with both jar files so it is not
working, isn't it?

I'm not sure why it is happening yet I think this is what I'm faced with.
http://confluence.atlassian.com/display/CONF27/Frequently+Asked+Questions#FrequentlyAskedQuestions-3.2

Does anyone know how to solve this without removing any files?

Regards,
Kevin




2008/10/25 Caldarale, Charles R <Ch...@unisys.com>

> > From: Kevin SeongHyun Lee [mailto:public.class.kevin@gmail.com]
> > Subject: Re: How can I use a class in javax package from the
> > jar file in WEB-INF/lib instead of the one in common/lib.
> >
> > I believe, if a class is in java or javax package it might not
> > be loaded from the libraries in the WEB-INF/lib directory first
> > but the common/lib one
>
> Not true; WEB-INF/lib is searched before common/lib.  However, if a class
> has already been loaded via the common/lib classloader, it may prevent use
> of the one in the webapp's jars.
>
> > as mentioned in the FAQ
> > found from the following link.
> > http://ws.apache.org/axis/faq.html#faq5
> >
> > "*Why do some classes fail to load under Tomcat?*
> >
> > Tomcat will not load classes with package names starting
> > "java." or "javax."
> > from the WEB-INF directory. jars containing such classes need to be
> > installed in $TOMCAT_HOME/common/lib rather than in
> > WEB-INF/lib. Currently
> > (April 25, 2002) jaxrpc.jar is such a jar."
>
> Note the date - 6.5 years old, and no longer accurate (possibly not ever
> accurate), at least not as written.  Tomcat will happily load java.* or
> javax.* classes from WEB-INF/lib, but will ignore any jars containing either
> of these classes:
>  javax.servlet.Servlet
>  javax.servlet.jsp.JspPage
>
> Here's the real info on Tomcat 5.5 classloading:
> 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
>
>