You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by to...@erit.se on 2004/09/23 14:25:17 UTC

Classloading, jar-files in shared/lib works only when webapp is placed in $CATALINA_HOME/webapps (tomcat 5.0.28)


I tested a very simple servlet application and found that classes in jar-files that are placed in $CATALINA_HOME/shared/lib works just fine when the application is placed under the $CATALINA_HOME/webapps directory.

However, if the application is placed elsewhere on the disc, let us say in d:/myTomcat5Test/exploded and then a context configuration file is is created, let us say  $CATALINA_HOME/conf/Catalina/localhost/myTomcat5Test.xml and pointing the docBase to d:/myTomcat5Test/exploded, then the application will throw a ClassNotFoundException.


This is what the context snippet looks like 
*************************
<Context path="/myTomcat5Test" docBase="d:/myTomcat5Test/exploded"
        debug="0" privileged="true">
  <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_myTomcat5Test_log." suffix=".txt"
          timestamp="true"/>
</Context>


When testing the same application under Tomcat4, everyting works just fine.

Any ideas why folks ?
Regards
Erik






On 2004-09-17 tomcat-user@erit.se wrote:


>Hello 
>
>Sorry to drag this issue on but, I still don't get Tomcat 5 to recognize classes in jar files located in $CATALINA_HOME/shared/lib
>
>I tried my orginal application (which was running fine under Tomcat 4.1.x, both on Windows and Linux)
>with Tomcat 5.0.28 and then with 5.0.16, both under Windows and Linux, but the problem with the ClassNotFoundEception still occurred.
>
>Then I decided to reduce as many potential problem areas as possible, by writing a new very simple application consisting of only one html page and one servlet, and only one external jar-file. (My original application was quite large with many jar dependencies)
>
>So I started up my IDE, created the new application, created the servlet, deployed in tomcat 4.1.x and, placed the jar-file in /shared/lib and of course it works.
>Then I deployed under Tomcat 5.0.28, but no, it does not work. After moving the jarfile to /common/lib it works though.
>
>This really puzzels me.
>
>What can I do to get to the bottom with this ?
>Is there any specific configuration that I could have missed ?
>Any other test cases I should perform ?
>Should I send my code to someone for inspection ?
>
>
>Any help is appreciated
>
>
>On 2004-09-01 Shapira Yoav  wrote:
>
>
>>Hi,
>>Oh yeah, that reminds me, we might have a bug still present with
>>classloading from shared/lib in 5.0.x.  Try a much earlier version, e.g.
>>5.0.16, and let us know if that works.
>>
>>Yoav Shapira
>>Millennium Research Informatics
>>
>>
>>>-----Original Message-----
>>>From: tomcat-user@erit.se [mailto:tomcat-user@erit.se]
>>>Sent: Wednesday, September 01, 2004 3:58 PM
>>>To: tomcat-user@jakarta.apache.org
>>>Subject: What is the difference in classloading between tomcat 4.1.x
>>and
>>>5.0.x
>>>
>>>
>>>In a web application running under Tomcat, I have defined a filter in
>>the
>>>web.xml file. The filter is pointing to a class that is packed in a
>>jar-
>>>file, and the jar-file is kept in the $CATALINA_HOME/shared/lib
>>directory.
>>>
>>>In Tomcat 4.1.x the application is working without any problems. When
>>>trying to run the same application under Tomcat 5.0.28 a
>>>java.lang.ClassNotFoundException is thrown.
>>>
>>>If the jar-file is placed in $CATALINA_HOME/common/lib, then the class
>>is
>>>found  and the application runs without problem.
>>>
>>>The same issue appears when using Listeners in the web.xml file.
>>>
>>>I have also tried the same setup with 5.0.27 which leads to the same
>>>result.
>>>
>>>What is it that has changed between 4.1x and 5.0.x, in regards to
>>>classloading, in order to cause this problem ?
>>>
>>>Any help in understanding this problem is appreciated.
>>>Regards
>>>Erik
>>>
>>>
>>> **********  stacktrace
>>>******************************************************
>>>2004-09-01 17:35:07
>>>NamingContextListener[/Catalina/localhost/webdialInstance]:   Resource
>>>parameters for UserTransaction = null
>>>2004-09-01 17:35:07 StandardContext[/webdialInstance]Exception starting
>>>filter Compress
>>>java.lang.ClassNotFoundException:
>>>se.erit.web.servlet.filters.gzip.GZIPFilter
>>>	at
>>>org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoade
>>r.ja
>>>va:1340)
>>>	at
>>>org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoade
>>r.ja
>>>va:1189)
>>>	at
>>>org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationF
>>ilte
>>>rConfig.java:211)
>>>	at
>>>org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(Applicati
>>onFi
>>>lterConfig.java:308)
>>>	at
>>>org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilt
>>erCo
>>>nfig.java:79)
>>>	at
>>>org.apache.catalina.core.StandardContext.filterStart(StandardContext.ja
>>va:3
>>>698)
>>>	at
>>>org.apache.catalina.core.StandardContext.start(StandardContext.java:434
>>9)
>>>	at
>>>org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.j
>>ava:
>>>823)
>>>	at
>>>org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:12
>>1)
>>>	at
>>>org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(Container
>>Base
>>>.java:143)
>>>	at java.security.AccessController.doPrivileged(Native Method)
>>>	at
>>>org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
>>>	at
>>>org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
>>>	at
>>>org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDepl
>>oyer
>>>.java:903)
>>>	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>	at
>>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
>>va:3
>>>9)
>>>	at
>>>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
>>rImp
>>>l.java:25)
>>>	at java.lang.reflect.Method.invoke(Method.java:324)
>>>	at
>>>org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:
>>216)
>>>	at
>>org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
>>>	at org.apache.commons.digester.Rule.end(Rule.java:276)
>>>	at
>>>org.apache.commons.digester.Digester.endElement(Digester.java:1058)
>>>	at
>>>org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.j
>>ava:
>>>76)
>>>	at
>>org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
>>>Source)
>>>	at
>>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Un
>>know
>>>n Source)
>>>	at
>>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDi
>>spat
>>>cher.dispatch(Unknown Source)
>>>	at
>>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkn
>>own
>>>Source)
>>>	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
>>Source)
>>>	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
>>Source)
>>>	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>>>	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
>>Source)
>>>	at
>>org.apache.commons.digester.Digester.parse(Digester.java:1567)
>>>	at
>>>org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeplo
>>yer.
>>>java:488)
>>>	at
>>>org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
>>>	at
>>>org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.jav
>>a:48
>>>3)
>>>	at
>>>org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
>>>	at
>>org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
>>>	at
>>>org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:3
>>49)
>>>	at
>>>org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleS
>>uppo
>>>rt.java:119)
>>>	at
>>>org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
>>>	at
>>org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
>>>	at
>>>org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
>>>	at
>>>org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
>>>	at
>>>org.apache.catalina.core.StandardService.start(StandardService.java:480
>>)
>>>	at
>>>org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
>>>	at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
>>>	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>	at
>>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
>>va:3
>>>9)
>>>	at
>>>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
>>rImp
>>>l.java:25)
>>>	at java.lang.reflect.Method.invoke(Method.java:324)
>>>	at
>>org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
>>>	at
>>org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
>>>
>>>*************** end of trace
>>>***************************************************
>>>
>>>
>>>
>>>
>>>Erik Rosengren
>>>ERIT Consulting AB
>>>+46-70-7183333
>>>mailto:erik.rosengren@erit.se
>>>http://www.erit.se
>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>>
>>
>>This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged.  This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender.  Thank you.
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>
>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>






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