Bug 48179 - After startup seeing java.io.FileNotFoundException:<file path>/tldcache.ser (No such file or directory)
Summary: After startup seeing java.io.FileNotFoundException:<file path>/tldcache.ser (...
Alias: None
Product: Tomcat 5
Classification: Unclassified
Component: Jasper (show other bugs)
Version: 5.5.23
Hardware: PC Linux
: P2 minor (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
Depends on:
Reported: 2009-11-11 11:10 UTC by Samuel Mendenhall
Modified: 2010-05-25 22:53 UTC (History)
0 users

patch for TC 5.5 (4.52 KB, patch)
2010-02-03 01:23 UTC, Konstantin Kolinko
Details | Diff
patch for TC 6 (5.27 KB, patch)
2010-02-03 01:44 UTC, Konstantin Kolinko
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Samuel Mendenhall 2009-11-11 11:10:14 UTC
This issue is seeing in Tomcat 5.5.23 after startup the following exception is seeing:
java.io.FileNotFoundException: <path removed for privacy>/tldCache.ser (No such file or directory)
       at java.io.FileOutputStream.open(Native Method)
       at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
       at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
       at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:317)
       at org.apache.catalina.core.StandardContext.processTlds(StandardContext.java:4307)
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:4144)
       at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
       at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:122)
       at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:144)
       at java.security.AccessController.doPrivileged(Native Method)
       at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:738)
       at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
       at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
       at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
       at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
       at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
       at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
       at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)

Note that JSPs are not being used.

This exception doesn't happen when setting processTlds="false" in conf/context.xml but still occurs when setting it in a <context> defined in conf/server.xml, it won't work. 

The processTlds attribute should work in the <Context> in conf/server.xml also as seen here http://tomcat.apache.org/tomcat-5.5-doc/config/context.html  (though not recommended)
Comment 1 Mark Thomas 2010-02-02 08:52:41 UTC
5.5.x tries to write the TLD cache to the work directory. This gets created if ti doesn't exist. At a guess, I'd say the Tomcat process doesn't have the necessary permissions to create the work directory structure.

Please follow up on the users list of you need more assistance.
Comment 2 Konstantin Kolinko 2010-02-03 00:41:51 UTC
There is a minor issue there:

This exception in TldConfig.execute(), and also one in TldConfig.processCache(), 
are processed with

Something like
 log.warn("Failed to write tldCache.ser file", ex);
would provide a better context for this message.

This applies only to 5.5.  In 6.0 the same code is also present, but it is never called (as tldCache is always null there), and thus can be removed instead of trying to fix it.
Comment 3 Konstantin Kolinko 2010-02-03 01:23:22 UTC
Created attachment 24918 [details]
patch for TC 5.5

Patch for TC 5.5 that
- logs TLD cache reading and writing errors
- if reading a TLD cache fails continues TLD scanning, instead of quiting
Comment 4 Konstantin Kolinko 2010-02-03 01:44:18 UTC
Created attachment 24919 [details]
patch for TC 6

Patch for TC 6.0 that removes code responsible for reading and writing the TLD cache file, because it is never called. (tldCache is always null)
Comment 5 Konstantin Kolinko 2010-02-03 01:53:35 UTC
Proposed the patches for 5.5 and 6.0.
Comment 6 Mark Thomas 2010-02-22 21:07:49 UTC
This has been fixed in 6.0.x and will be included in 6.0.25 onwards.
Comment 7 Konstantin Kolinko 2010-05-25 22:53:14 UTC
This has been fixed in 5.5 in r948296 and will be in 5.5.30 onwards.