Neven Even Tomcat newbies have to do real work that will find its way to a real server.
Either of the benefits you described as a) and b) mean CATALINA_HOME and CATALINA_BASE need to be separate on a real server. I would rather get it straight from the outset rather than mess about with a configuration that is going nowhere. NetBeans separates out CATALINA_HOME and CATALINA_BASE, either automatically making its own decisions about the content of CATALINA_BASE or manually by allowing you to specify your own hand crafted directory. I just made the switch from letting NetBeans populate CATALINA_BASE, to doing it myself. Naturally I want to avoid having the same files appear in both directories so I went for minimal content. How much easier it would be if the Tomcat distribution had the correct separation build in. Vince -----Original Message----- From: Neven Cvetkovic [mailto:neven.cvetko...@gmail.com] Sent: 03 November 2014 20:22 To: Tomcat Users List Subject: Re: Separation of CATALINA_HOME and CATALINA_BASE Vince, On Mon, Nov 3, 2014 at 2:38 PM, <vince.w...@thomsonreuters.com> wrote: > On the subject of "Newbie-friendly", I think Tomcat would be a whole > lot more friendly if CATALINA_HOME and CATALINA_BASE were always > totally separate with a minimum of overlap. > > Why is that? I would argue current setup is very simple and "newbie-friendly". Most newbies are going to have a single-instance tomcat running, even developers in their IDEs (Eclipse, NetBeans, IntelliJ, etc...) would probably start with a single Tomcat instance. You want your CATALINA_HOME = CATALINA_BASE in the "newbie" situation. Actually you don't even want to advertise the difference to the "newbies". You probably shouldn't even configure CATALINA_HOME/CATALINA_BASE environment variables, but let the scripts infer from where you are running them. Now, once one graduates pass the "newbie-friendly" - one can start looking when CATALINA_HOME != CATALINA_BASE is useful. Here are some ideas, why you would maybe want to separate out CATALINA_HOME and CATALINA_BASE: a) when you want to make your Tomcat upgrades easier over time, so you just upgrade your CATALINA_HOME each time and you keep your existing CATALINA_BASE (instance configuration) directory. b) multi-instance environment, when you have multiple Tomcat instances running on the same machine, and you are "sick-and-tired" of copying entire tomcat directory for each instance and do the upgrades for each instance individually Other than that, I don't see another reason to have CATALINA_HOME and CATALINA_BASE be any different. > Although I used Tomcat quite a lot years ago I still consider myself a > Tomcat Newbie, mostly because configuration always took days or weeks > longer than is reasonable. Now I'm back to Tomcat after years of > having it easy using GlassFish. The files might be different now but > the grief with configuration is still the same. > > I've been through numerous configurations with various versions of > Tomcat > 7 and 8 the furthest I've got is getting a database connection to > work. Now having created a minimal CATALINA_BASE I've jumped a few > steps back and it won't start. > Exactly my point earlier Vince. You ignore setting up CATALINA_HOME/CATALINA_BASE, you let the scripts infer that from where it is being started. And then you just configure your datasource either at the <GlobalNamingResources> level (e.g at conf/server.xml) or at the <Context> level (e.g. at conf/Catalina/localhost/myapp.xml). > I am sure many of the problems would evaporate if only there were > built in and permanent clarity over the separation between > CATALINA_HOME and CATALINA_BASE. > > Yes, I've read RUNNING.TXT and I'm left wondering why do I have a > catalina class not found if all the tomcat jar files are in > CATALINA_HOME/lib > > Using CATALINA_BASE: "C:\tomcat8catalina_base" > Using CATALINA_HOME: "C:\tomcat809" > Using CATALINA_TMPDIR: "C:\tomcat8catalina_base\temp" > Using JRE_HOME: "C:\jdk1.7.0_55" > Using CLASSPATH: > "C:\tomcat809\bin\bootstrap.jar;C:\tomcat8catalina_base\bin\tomcat-juli.jar" > Listening for transport dt_shmem at address: tomcat_shared_memory_id > 03-Nov-2014 17:45:50.410 SEVERE [main] > org.apache.tomcat.util.digester.Digester.startElement Begin event > threw exception > java.lang.ClassNotFoundException: > org.apache.catalina.startup.VersionLoggerListener > > > All these experiments are done running Tomcat under NetBeans so > perhaps part of my issue is with NetBeans. The CLASSPATH shown above > is a bit on the short side, is it meant to be so short ? > If you are running Tomcat instance in IDE, why do you bother separating out CATALINA_BASE and CATALINA_HOME? Default unzip and play setup work nicely in Eclipse and IntelliJ. I have not played with NetBeans as much, but I am sure it is easy out-of-box setup. Hope that helps! Cheers! Neven