John Willemin wrote:
> Tomcat 6.0.16
> Linux 2.6.18
> JDK 1.6.0_05
>
> Imagine a webapp like this:
> /index.jsp
> /WEB-INF
> -web.xml (of course)
> -/classes
> --ConfigFile.txt
> -/lib
> --MyConfigLoader.class
>
> If I want to load ConfigFile.txt into an InputStream from inside my
> webapp, all I have to do is this:
>
> InputStream configStream =
> this.getClass().getClassLoader().getResource("/ConfigFile.txt");
>
> In some cases, I may want to run multiple instances of the application but
> have them share one copy of the configuration file. The idea is that I
> only want to have to maintain one version of the config file per Tomcat
> and have all the webapps use the same copy. If I put ConfigFile.txt inside
> /tmp, for instance, this works fine:
>
> InputStream configStream = new FileInputStream("/tmp/ConfigFile.txt");
>
> But what I tried doing was, symbolically linking all the different webapps
> to one copy of the file. In other words,
> tomcat/webapps/myapp1/WEB-INF/classes/ConfigFile.txt and
> tomcat/webapps/myapp2/WEB-INF/classes/ConfigFile.txt would just be
> symlinks to /tmp/ConfigFile.txt.
>
> When I do this, the input stream comes up null:
> InputStream configStream =
> this.getClass().getClassLoader().getResource("/ConfigFile.txt");
>
> I thought that symlinks were just treated like files, and that this should
> just work. I stepped through org.apache.catalina.loader.WebappClassLoader
> in the Eclipse debugger and I can't see anything that would obviously
> prevent symlinks from working. But the only time that the ConfigFile.txt
> shows up in the resourceEntries Map as a ResourceEntry is when I have the
> file physically inside WEB-INF/classes - never when it is only a symlink.
>
> I have googled many combinations of
> java/linux/classloader/tomcat/symlink/symbolic link/classpath and not
> found anything quite like this yet.
>
> Any ideas?
>
> Thanks!
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>   
If you look at all the third party repackages of tomcat that fail,
you'll see a theme -- symlinks cause problems in java.  I would highly
recommend you find a way to maintain that config file via the build
system and have a copy in each of the webapps.  Either that or put a
copy in tomcat's lib folder where it becomes accessible to all webapps
in the environment.

--David


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to