Bug 11489 - Scanning JAR files in WEB-INF/lib without temp directory
Summary: Scanning JAR files in WEB-INF/lib without temp directory
Status: RESOLVED DUPLICATE of bug 9591
Alias: None
Product: Tomcat 4
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 4.1.8
Hardware: PC All
: P3 enhancement with 2 votes (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
: 12474 (view as bug list)
Depends on:
Blocks:
 
Reported: 2002-08-06 06:05 UTC by Juergen Hoeller
Modified: 2005-03-20 17:06 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Juergen Hoeller 2002-08-06 06:06:00 UTC
Scanning JAR files in WEB-INF/lib for TLDs does not work if there is no "temp" 
directory in CATALINA_BASE. Especially using a CATALINA_BASE different from 
CATALINA_HOME is tricky: You have to create "temp" there first. IMHO Tomcat 
should create "temp" automatically if it does not already exist! This issue 
exists in both Tomcat 4.1.8 and 4.0.4.

In Tomcat 4.1.8 with JSTL, the context does not load because of the following 
exception:

2002-08-06 07:33:10 ContextConfig[] Exception processing JAR at resource 
path /WEB-INF/lib/jstl.jar
javax.servlet.ServletException: Exception processing JAR at resource path /WEB-
INF/lib/jstl.jar
	at org.apache.catalina.startup.ContextConfig.tldScanJar
(ContextConfig.java:930)
	at org.apache.catalina.startup.ContextConfig.tldScan
(ContextConfig.java:868)
	at org.apache.catalina.startup.ContextConfig.start
(ContextConfig.java:647)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent
(ContextConfig.java:243)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent
(LifecycleSupport.java:166)
	at org.apache.catalina.core.StandardContext.start
(StandardContext.java:3445)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardEngine.start
(StandardEngine.java:347)
	at org.apache.catalina.core.StandardService.start
(StandardService.java:497)
	at org.apache.catalina.core.StandardServer.start
(StandardServer.java:2188)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
	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:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
java.io.IOException: Das System kann den angegebenen Pfad nicht finden
	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
	at java.io.File.checkAndCreate(File.java:1294)
	at java.io.File.createTempFile(File.java:1382)
	at java.io.File.createTempFile(File.java:1419)
	at sun.net.www.protocol.jar.URLJarFile$1.run(URLJarFile.java:169)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:164)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:42)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:78)
	at sun.net.www.protocol.jar.JarURLConnection.connect
(JarURLConnection.java:85)
	at sun.net.www.protocol.jar.JarURLConnection.getJarFile
(JarURLConnection.java:69)
	at org.apache.catalina.startup.ContextConfig.tldScanJar
(ContextConfig.java:906)
	at org.apache.catalina.startup.ContextConfig.tldScan
(ContextConfig.java:868)
	at org.apache.catalina.startup.ContextConfig.start
(ContextConfig.java:647)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent
(ContextConfig.java:243)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent
(LifecycleSupport.java:166)
	at org.apache.catalina.core.StandardContext.start
(StandardContext.java:3445)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
	at org.apache.catalina.core.StandardEngine.start
(StandardEngine.java:347)
	at org.apache.catalina.core.StandardService.start
(StandardService.java:497)
	at org.apache.catalina.core.StandardServer.start
(StandardServer.java:2188)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
	at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
	at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
	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:324)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)

Note: The German "Das System kann den angegebenen Pfad nicht finden" means "The 
system cannot find the specified path".

In Tomcat 4.0.4 with JSTL, the context processes but nevertheless does not load 
the TLDs. Instead, it throws the following exception at page access time:

org.apache.jasper.JasperException: This absolute uri 
(http://java.sun.com/jstl/core) cannot be resolved in either web.xml or the jar 
files deployed with this application
	at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>
(TagLibraryInfoImpl.java:194)
	at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>
(TagLibraryInfoImpl.java:174)
	at 
org.apache.jasper.compiler.JspParseEventListener.processTaglibDirective
(JspParseEventListener.java:1170)
	at org.apache.jasper.compiler.JspParseEventListener.handleDirective
(JspParseEventListener.java:765)
	at org.apache.jasper.compiler.DelegatingListener.handleDirective
(DelegatingListener.java:125)
	at org.apache.jasper.compiler.Parser$Directive.accept(Parser.java:255)
	at org.apache.jasper.compiler.Parser.parse(Parser.java:1145)
	at org.apache.jasper.compiler.Parser.parse(Parser.java:1103)
	at org.apache.jasper.compiler.Parser.parse(Parser.java:1099)
	at org.apache.jasper.compiler.ParserController.parse
(ParserController.java:214)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:210)
	at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:548)
	at 
org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary
(JspServlet.java:176)
	at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service
(JspServlet.java:188)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:381)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:190)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2347)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.valves.AccessLogValve.invoke
(AccessLogValve.java:468)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.connector.http.HttpProcessor.process
(HttpProcessor.java:1027)
	at org.apache.catalina.connector.http.HttpProcessor.run
(HttpProcessor.java:1125)
	at java.lang.Thread.run(Thread.java:536)
Comment 1 Remy Maucherat 2002-08-09 10:13:24 UTC
The default installation works fine.
Comment 2 Remy Maucherat 2002-09-10 09:51:52 UTC
*** Bug 12474 has been marked as a duplicate of this bug. ***
Comment 3 Remy Maucherat 2004-10-15 12:52:45 UTC

*** This bug has been marked as a duplicate of 9591 ***