You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by André Warnier <aw...@ice-sa.com> on 2012/06/10 10:51:06 UTC

Tomcat 6 : Warnings at startup

Hi.

This is on a Linux Debian system, Tomcat 6 installed from a Debian package.
/usr/share/tomcat6/bin/version.sh shows this :

Using CATALINA_BASE:   /usr/share/tomcat6
Using CATALINA_HOME:   /usr/share/tomcat6
Using CATALINA_TMPDIR: /usr/share/tomcat6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat6/bin/bootstrap.jar
Server version: Apache Tomcat/6.0.35
Server built:   Jan 31 2012 04:27:38
Server number:  6.0.35.0
OS Name:        Linux
OS Version:     3.2.0-0.bpo.2-686-pae
Architecture:   i386
JVM Version:    1.6.0_26-b03
JVM Vendor:     Sun Microsystems Inc.
root@colin:/usr/share/tomcat6/bin#


This Tomcat has been running fine for several months (ever since the system was 
installed), but today I had to restart the system and Tomcat, and I noticed this in the logs :

In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these lines :

Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/server/classes], exists: [false], 
isDirectory: [false], canRead: [false]
Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/server], exists: [false], isDirectory: 
[false], canRead: [false]
Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/shared/classes], exists: [false], 
isDirectory: [false], canRead: [false]
Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/shared], exists: [false], isDirectory: 
[false], canRead: [false]
Jun 10, 2012 10:31:35 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jun 10, 2012 10:31:35 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 890 ms
Jun 10, 2012 10:31:35 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jun 10, 2012 10:31:35 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
Jun 10, 2012 10:31:35 AM org.apache.catalina.startup.HostConfig deployDescriptor
...
(the rest is normal)

What are these WARNING messages for, and should I worry ?
(the shown directories indeed do not exist. Should they ?)

Thanks


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


Re: Tomcat 6 : Warnings at startup

Posted by André Warnier <aw...@ice-sa.com>.
Responding to my own post, see at end.

André Warnier wrote:
> Konstantin Kolinko wrote:
>> 2012/6/10 André Warnier <aw...@ice-sa.com>:
>>> Hi.
>>>
>>> This is on a Linux Debian system, Tomcat 6 installed from a Debian 
>>> package.
>>> /usr/share/tomcat6/bin/version.sh shows this :
>>>
>>> Using CATALINA_BASE:   /usr/share/tomcat6
>>> Using CATALINA_HOME:   /usr/share/tomcat6
>>> Using CATALINA_TMPDIR: /usr/share/tomcat6/temp
>>> Using JRE_HOME:        /usr
>>> Using CLASSPATH:       /usr/share/tomcat6/bin/bootstrap.jar
>>> Server version: Apache Tomcat/6.0.35
>>> Server built:   Jan 31 2012 04:27:38
>>> Server number:  6.0.35.0
>>> OS Name:        Linux
>>> OS Version:     3.2.0-0.bpo.2-686-pae
>>> Architecture:   i386
>>> JVM Version:    1.6.0_26-b03
>>> JVM Vendor:     Sun Microsystems Inc.
>>> root@colin:/usr/share/tomcat6/bin#
>>
>> Root? You must never run Tomcat as root.
> 
> Let the sysadmin who has never run anything as root throw me the first 
> stone.. ;-)
> 
> But I am not running Tomcat as root, I just printed the above as root.
> Tomcat 6 is running as user "tomcat6", as per :
> 
> tomcat6   6438     1  0 10:31 ?        00:00:07 
> /usr/lib/jvm/java-6-sun/bin/java 
> -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties 
> -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC 
> -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
> -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath 
> /usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 
> -Dcatalina.home=/usr/share/tomcat6 
> -Djava.io.tmpdir=/tmp/tomcat6-tomcat6-tmp 
> org.apache.catalina.startup.Bootstrap start
> root@colin:/usr/share/tomcat6/bin#
> 
> but I cannot login as that user on a console (shell=/bin/false).
> 
>>
>>> This Tomcat has been running fine for several months (ever since the 
>>> system
>>> was installed), but today I had to restart the system and Tomcat, and I
>>> noticed this in the logs :
>>>
>>> In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these 
>>> lines :
>>>
>>> Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory
>>> validateFile
>>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes], 
>>> exists:
>>> [false], isDirectory: [false], canRead: [false]
>>> Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory
>>> validateFile
>>> WARNING: Problem with directory [/usr/share/tomcat6/server], exists:
>>> [false], isDirectory: [false], canRead: [false]
>>
>> Those look very much like directories that Tomcat 5.5 uses. I would
>> guess that your CATALINA_BASE is wrong. That is as if you tried to
>> start Tomcat 6 with Tomcat 5.5 configuration files.
> 
> Well, not as far as I can tell. This host (a VM) was set up several 
> months ago, directly with Tomcat 6.  Tomcat 5.5 was never even installed 
> on it.
> I also cannot find any reference to Tomcat 5.5 anywhere in the 
> configuration files. Everything mentions Tomcat 6.
> CATALINA_BASE = CATALINA_HOME = /usr/share/tomcat6, as per above 
> version.sh output.
> 
> I know that these packages tend to put things all over the place, but in 
> this case I cannot see how there could be Tomcat 5.5 leftovers.
> 
> I also ran some "grep -R tomcat5" on /etc, /var, /usr, etc..
> The only thing remotely suspicious is this :
> 
> Binary file lib/apache2/modules/mod_jk.so matches
> 
> but that may just be a comment somewhere in that file.
> 
> So, what does that "org.apache.catalina.startup.ClassLoaderFactory 
> validateFile" really do, that it does not seem happy ?
> 
> 

Actually, there is a twist :

"version.sh" prints the above, BUT
in /etc/init.d/tomcat6 (the startup script of Tomcat6 under Debian Linux), it sets
CATALINA_BASE=/var/lib/tomcat6
(but of course "version.sh" does not know that).

In /var/lib/tomcat6, there is this :
root@colin:/var/lib/tomcat6# ls -la
total 24
drwxr-xr-x  6 root    root    4096 Apr  4 04:07 .
drwxr-xr-x 45 root    root    4096 Apr 11 11:21 ..
drwxr-xr-x  3 tomcat6 tomcat6 4096 Apr  4 04:07 common
lrwxrwxrwx  1 root    root      12 Apr  4 04:07 conf -> /etc/tomcat6
lrwxrwxrwx  1 root    root      17 Apr  4 04:07 logs -> ../../log/tomcat6
drwxr-xr-x  3 tomcat6 tomcat6 4096 Apr  4 04:07 server
drwxr-xr-x  3 tomcat6 tomcat6 4096 Apr  4 04:07 shared
drwxrwxr-x  4 tomcat6 tomcat6 4096 Apr  4 08:29 webapps
lrwxrwxrwx  1 root    root      19 Apr  4 04:07 work -> ../../cache/tomcat6
root@colin:/var/lib/tomcat6#

root@colin:/var/lib/tomcat6# cd webapps
root@colin:/var/lib/tomcat6/webapps# ls -la
total 16
drwxrwxr-x  4 tomcat6 tomcat6 4096 Apr  4 08:29 .
drwxr-xr-x  6 root    root    4096 Apr  4 04:07 ..
drwxr-xr-x  3 root    root    4096 Apr  4 04:07 ROOT
drwxrwsr-x 22 star    star    4096 Nov 21  2011 starweb

root@colin:/var/lib/tomcat6/webapps# grep -R "tomcat5" *
root@colin:/var/lib/tomcat6/webapps#


Does that throw any light on what may be happening ?


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


Re: Tomcat 6 : Warnings at startup

Posted by André Warnier <aw...@ice-sa.com>.
André Warnier wrote:
> Konstantin Kolinko wrote:
>> 2012/6/10 André Warnier <aw...@ice-sa.com>:
>>> No tomcat 5.5 files have been copied to that system (apart from the 
>>> webapp).
>>> Here is the complete (edited, comments removed) content of
>>> tomcat6/conf/catalina.properties :
>>>
>>> (...)
>>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar 
>>>
>>> server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,/var/lib/tomcat6/server/classes,/var/lib/tomcat6/server/*.jar 
>>>
>>> shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,/var/lib/tomcat6/shared/classes,/var/lib/tomcat6/shared/*.jar 
>>>
>>
>> The above fragment of catalina.properties explains the issue that you
>> are observing.
>>
>> The "common.loader", "server.loader" and "shared.loader" values
>> provide configuration for Common, Server and Shared classloader, as
>> better documented in 5.5 (Tomcat 6 docs not mention Server and Shared
>> ones, but they still do exist):
>>
>> http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html#Overview
>>
>> If you look at a fresh copy of Tomcat 6, the values would be:
>>
>> [[[
>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar 
>>
>> server.loader=
>> shared.loader=
>> ]]]
>>
>> The ones that you have in your file are a mix of 5.5 and 6.0 values.
>>
>> ClassLoaderFactory.validateFile() method is called in turn for each
>> value in each of the 3 *.loader options and checks that those values
>> point to an existing place, which is a directory and is readable.
>>
>> In your case,
>>
>>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
>>> exists: [false], isDirectory: [false], canRead: [false]
>>
>> it looked for [/usr/share/tomcat6/server/classes] and warned you that
>> the said directory does not exist.
>>
>>
> 
> Thank you Konstantin for this very thorough explanation.
> 
> So, it looks like my options to make the warnings disappear are
> - either just create these directories (empty) in CATALINA_HOME
> - or modify the tomcat6/conf/catalina.properties file to remove (direct 
> or indirect) references to /usr/share/tomcat6/server
> 
> As it is now, the file comes from the Tomcat 6 Debian package; I did not 
> modify that file.
> I would imagine that if the Debian package maintainer decided to modify 
> the standard file, he had some reason to do that.
> 
> Based on your knowledge, do you have an idea as to why the Debian Tomcat 
> 6 package maintainer may have considered it a good idea to modify the 
> standard catalina.properties in the way that he did ?  Could it be to 
> make upgrades tomcat 5.5 -> tomcat 6 easier ?
> 
> (To me, there seems to be a curious mixture of "symbolic" 
> (${catalina.home}/*) and "hardwired" (/var/lib/tomcat6/*) references in 
> the Debian version of that file.)
> 
> 

For the record : adding the missing directories under CATALINA_HOME (/usr/share/tomcat6 
here), and making them owned/readable by the tomcat6 user, definitely does it (make the 
WARNING messages disappear) :

Jun 10, 2012 5:03:47 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
Jun 10, 2012 5:03:48 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jun 10, 2012 5:03:49 PM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080

Jun 10, 2012 5:03:57 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jun 10, 2012 5:03:57 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 408 ms
Jun 10, 2012 5:03:57 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jun 10, 2012 5:03:57 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
Jun 10, 2012 5:03:57 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor myapp.xml
...


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


Re: Tomcat 6 : Warnings at startup

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/6/10 André Warnier <aw...@ice-sa.com>:
> Konstantin Kolinko wrote:
>>
>> 2012/6/10 André Warnier <aw...@ice-sa.com>:
>>>
>>> No tomcat 5.5 files have been copied to that system (apart from the
>>> webapp).
>>> Here is the complete (edited, comments removed) content of
>>> tomcat6/conf/catalina.properties :
>>>
>>> (...)
>>>
>>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar
>>>
>>> server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,/var/lib/tomcat6/server/classes,/var/lib/tomcat6/server/*.jar
>>>
>>> shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,/var/lib/tomcat6/shared/classes,/var/lib/tomcat6/shared/*.jar
>>
>>
>> The above fragment of catalina.properties explains the issue that you
>> are observing.
>>
>> The "common.loader", "server.loader" and "shared.loader" values
>> provide configuration for Common, Server and Shared classloader, as
>> better documented in 5.5 (Tomcat 6 docs not mention Server and Shared
>> ones, but they still do exist):
>>
>> http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html#Overview
>>
>> If you look at a fresh copy of Tomcat 6, the values would be:
>>
>> [[[
>>
>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
>> server.loader=
>> shared.loader=
>> ]]]
>>
>> The ones that you have in your file are a mix of 5.5 and 6.0 values.
>>
>> ClassLoaderFactory.validateFile() method is called in turn for each
>> value in each of the 3 *.loader options and checks that those values
>> point to an existing place, which is a directory and is readable.
>>
>> In your case,
>>
>>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
>>> exists: [false], isDirectory: [false], canRead: [false]
>>
>>
>> it looked for [/usr/share/tomcat6/server/classes] and warned you that
>> the said directory does not exist.
>>
>>
>
> Thank you Konstantin for this very thorough explanation.
>
> So, it looks like my options to make the warnings disappear are
> - either just create these directories (empty) in CATALINA_HOME
> - or modify the tomcat6/conf/catalina.properties file to remove (direct or
> indirect) references to /usr/share/tomcat6/server
>
> As it is now, the file comes from the Tomcat 6 Debian package; I did not
> modify that file.

The file is strange. I wonder whether other configuration files there
have similar inconsistencies.

The good side though is that this error is not fatal. It was intended
more for folks trying to start Tomcat using different user and failing
because of libraries not being readable. (that is why "canRead" value
is included into the message). ;)

> I would imagine that if the Debian package maintainer decided to modify the
> standard file, he had some reason to do that.
>
> Based on your knowledge, do you have an idea as to why the Debian Tomcat 6
> package maintainer may have considered it a good idea to modify the standard
> catalina.properties in the way that he did ?  Could it be to make upgrades
> tomcat 5.5 -> tomcat 6 easier ?
>
> (To me, there seems to be a curious mixture of "symbolic"
> (${catalina.home}/*) and "hardwired" (/var/lib/tomcat6/*) references in the
> Debian version of that file.)

I can imagine that some odd packages (debs, rpms) were installing
their libraries into those folders.

Anyway
- Placing 3rd party libraries into Common classloader without a good
reason is usually a bad idea. It can result in odd dependencies and in
PermGen memory leaks.

- Are you using this Tomcat to run "your own" application or one
provided by Debian folks? If it were my own I would like to make sure
that there were none of unexpected libraries in those classloaders.

Creating the mentioned folders has the only benefit that you can leave
the original configuration file "as is".

Best regards,
Konstantin Kolinko

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


Re: Tomcat 6 : Warnings at startup

Posted by André Warnier <aw...@ice-sa.com>.
Konstantin Kolinko wrote:
> 2012/6/10 André Warnier <aw...@ice-sa.com>:
>> No tomcat 5.5 files have been copied to that system (apart from the webapp).
>> Here is the complete (edited, comments removed) content of
>> tomcat6/conf/catalina.properties :
>>
>> (...)
>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar
>> server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,/var/lib/tomcat6/server/classes,/var/lib/tomcat6/server/*.jar
>> shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,/var/lib/tomcat6/shared/classes,/var/lib/tomcat6/shared/*.jar
> 
> The above fragment of catalina.properties explains the issue that you
> are observing.
> 
> The "common.loader", "server.loader" and "shared.loader" values
> provide configuration for Common, Server and Shared classloader, as
> better documented in 5.5 (Tomcat 6 docs not mention Server and Shared
> ones, but they still do exist):
> 
> http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html#Overview
> 
> If you look at a fresh copy of Tomcat 6, the values would be:
> 
> [[[
> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
> server.loader=
> shared.loader=
> ]]]
> 
> The ones that you have in your file are a mix of 5.5 and 6.0 values.
> 
> ClassLoaderFactory.validateFile() method is called in turn for each
> value in each of the 3 *.loader options and checks that those values
> point to an existing place, which is a directory and is readable.
> 
> In your case,
> 
>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
>> exists: [false], isDirectory: [false], canRead: [false]
> 
> it looked for [/usr/share/tomcat6/server/classes] and warned you that
> the said directory does not exist.
> 
> 

Thank you Konstantin for this very thorough explanation.

So, it looks like my options to make the warnings disappear are
- either just create these directories (empty) in CATALINA_HOME
- or modify the tomcat6/conf/catalina.properties file to remove (direct or indirect) 
references to /usr/share/tomcat6/server

As it is now, the file comes from the Tomcat 6 Debian package; I did not modify that file.
I would imagine that if the Debian package maintainer decided to modify the standard file, 
he had some reason to do that.

Based on your knowledge, do you have an idea as to why the Debian Tomcat 6 package 
maintainer may have considered it a good idea to modify the standard catalina.properties 
in the way that he did ?  Could it be to make upgrades tomcat 5.5 -> tomcat 6 easier ?

(To me, there seems to be a curious mixture of "symbolic" (${catalina.home}/*) and 
"hardwired" (/var/lib/tomcat6/*) references in the Debian version of that file.)



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


Re: Tomcat 6 : Warnings at startup

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/6/10 André Warnier <aw...@ice-sa.com>:
>
> No tomcat 5.5 files have been copied to that system (apart from the webapp).
> Here is the complete (edited, comments removed) content of
> tomcat6/conf/catalina.properties :
>
> (...)
> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar
> server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,/var/lib/tomcat6/server/classes,/var/lib/tomcat6/server/*.jar
> shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,/var/lib/tomcat6/shared/classes,/var/lib/tomcat6/shared/*.jar

The above fragment of catalina.properties explains the issue that you
are observing.

The "common.loader", "server.loader" and "shared.loader" values
provide configuration for Common, Server and Shared classloader, as
better documented in 5.5 (Tomcat 6 docs not mention Server and Shared
ones, but they still do exist):

http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html#Overview

If you look at a fresh copy of Tomcat 6, the values would be:

[[[
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
server.loader=
shared.loader=
]]]

The ones that you have in your file are a mix of 5.5 and 6.0 values.

ClassLoaderFactory.validateFile() method is called in turn for each
value in each of the 3 *.loader options and checks that those values
point to an existing place, which is a directory and is readable.

In your case,

> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
> exists: [false], isDirectory: [false], canRead: [false]

it looked for [/usr/share/tomcat6/server/classes] and warned you that
the said directory does not exist.


Best regards,
Konstantin Kolinko

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


Re: Tomcat 6 : Warnings at startup

Posted by André Warnier <aw...@ice-sa.com>.
Konstantin Kolinko wrote:
>>>> In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these
>>>> lines :
>>>>
>>>> Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory
>>>> validateFile
>>>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
>>>> exists:
>>>> [false], isDirectory: [false], canRead: [false]
>>>> Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory
>>>> validateFile
>>>> WARNING: Problem with directory [/usr/share/tomcat6/server], exists:
>>>> [false], isDirectory: [false], canRead: [false]
>>>
>>> Those look very much like directories that Tomcat 5.5 uses. I would
>>> guess that your CATALINA_BASE is wrong. That is as if you tried to
>>> start Tomcat 6 with Tomcat 5.5 configuration files.
>>
>> Well, not as far as I can tell. This host (a VM) was set up several months
>> ago, directly with Tomcat 6.  Tomcat 5.5 was never even installed on it.
>> I also cannot find any reference to Tomcat 5.5 anywhere in the configuration
>> files. Everything mentions Tomcat 6.
>> CATALINA_BASE = CATALINA_HOME = /usr/share/tomcat6, as per above version.sh
>> output.
>>
> 
> catalina.sh autodetects home and base if you have not provided one,
> and I think you haven't
> 
>> I know that these packages tend to put things all over the place, but in
>> this case I cannot see how there could be Tomcat 5.5 leftovers.
>>
>> I also ran some "grep -R tomcat5" on /etc, /var, /usr, etc..
>> The only thing remotely suspicious is this :
>>
>> Binary file lib/apache2/modules/mod_jk.so matches
>>
>> but that may just be a comment somewhere in that file.
>>
> 
> Those folders are configured in conf/catalina.properties.  If you have
> that file copied from Tomcat 5.5 that you will see this effect.

No tomcat 5.5 files have been copied to that system (apart from the webapp).
Here is the complete (edited, comments removed) content of tomcat6/conf/catalina.properties :

package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar
server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,/var/lib/tomcat6/server/classes,/var/lib/tomcat6/server/*.jar
shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,/var/lib/tomcat6/shared/classes,/var/lib/tomcat6/shared/*.jar
tomcat.util.buf.StringCache.byte.enabled=true

> 
>> So, what does that "org.apache.catalina.startup.ClassLoaderFactory
>> validateFile" really do, that it does not seem happy ?
> 
> http://svn.apache.org/viewvc?view=revision&revision=1130932
> 

Konstantin,
thank you for helping.
But I am of sysadmin level, not java programmer level, so I can't really look inside that 
java source and figure out what is making it unhappy.

The WARNING messages in question do not seem to impact the ability of Tomcat to run, and 
to run the applications, for months in a row.
What I am saying, is that this is not a life-threatening issue.  I was just curious as to 
the warning, and trying to figure out if I was doing something wrong in the configuration, 
or if this might indicate a deeper issue.

The /etc/init.d/tomcat6 script which starts Tomcat is rather convoluted, but here is the 
section which apparently starts Tomcat :

...
		echo "CATALINA_HOME is : $CATALINA_HOME"
		echo "CATALINA_BASE is : $CATALINA_BASE"

		catalina_sh start $SECURITY
		sleep 5
         	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
			--user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
			>/dev/null; then
			if [ -f "$CATALINA_PID" ]; then
				rm -f "$CATALINA_PID"
			fi
			log_end_msg 1
		else
			log_end_msg 0
		fi
...

(I just added the 2 echo lines)


then I ran :

root@colin:/var/lib/tomcat6/webapps# /etc/init.d/tomcat6 stop
Stopping Tomcat servlet engine: tomcat6.
root@colin:/var/lib/tomcat6/webapps# /etc/init.d/tomcat6 start
Starting Tomcat servlet engine: tomcat6
CATALINA_HOME is : /usr/share/tomcat6
CATALINA_BASE is : /var/lib/tomcat6
.
root@colin:/var/lib/tomcat6/webapps#

So it looks like they are set properly. ??

but in /var/log/catalina.out I still have :

Jun 10, 2012 2:07:21 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
Jun 10, 2012 2:07:22 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jun 10, 2012 2:07:22 PM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
Jun 10, 2012 2:07:31 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/server/classes], exists: [false], 
isDirectory: [false], canRead: [false]
Jun 10, 2012 2:07:31 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/server], exists: [false], isDirectory: 
[false], canRead: [false]
Jun 10, 2012 2:07:31 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/shared/classes], exists: [false], 
isDirectory: [false], canRead: [false]
Jun 10, 2012 2:07:31 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat6/shared], exists: [false], isDirectory: 
[false], canRead: [false]
Jun 10, 2012 2:07:31 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
...

Now I see that the Debian tomcat6 package created the above directories in 
/var/lib/tomcat6 (which is CATALINA_BASE), but not in /usr/share/tomcat6 (which is 
CATALINA_HOME).
Maybe this is the problem ?



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


Re: Tomcat 6 : Warnings at startup

Posted by Konstantin Kolinko <kn...@gmail.com>.
>>>
>>> In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these
>>> lines :
>>>
>>> Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory
>>> validateFile
>>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes],
>>> exists:
>>> [false], isDirectory: [false], canRead: [false]
>>> Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory
>>> validateFile
>>> WARNING: Problem with directory [/usr/share/tomcat6/server], exists:
>>> [false], isDirectory: [false], canRead: [false]
>>
>>
>> Those look very much like directories that Tomcat 5.5 uses. I would
>> guess that your CATALINA_BASE is wrong. That is as if you tried to
>> start Tomcat 6 with Tomcat 5.5 configuration files.
>
>
> Well, not as far as I can tell. This host (a VM) was set up several months
> ago, directly with Tomcat 6.  Tomcat 5.5 was never even installed on it.
> I also cannot find any reference to Tomcat 5.5 anywhere in the configuration
> files. Everything mentions Tomcat 6.
> CATALINA_BASE = CATALINA_HOME = /usr/share/tomcat6, as per above version.sh
> output.
>

catalina.sh autodetects home and base if you have not provided one,
and I think you haven't

> I know that these packages tend to put things all over the place, but in
> this case I cannot see how there could be Tomcat 5.5 leftovers.
>
> I also ran some "grep -R tomcat5" on /etc, /var, /usr, etc..
> The only thing remotely suspicious is this :
>
> Binary file lib/apache2/modules/mod_jk.so matches
>
> but that may just be a comment somewhere in that file.
>

Those folders are configured in conf/catalina.properties.  If you have
that file copied from Tomcat 5.5 that you will see this effect.

> So, what does that "org.apache.catalina.startup.ClassLoaderFactory
> validateFile" really do, that it does not seem happy ?

http://svn.apache.org/viewvc?view=revision&revision=1130932

Best regards,
Konstantin Kolinko

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


Re: Tomcat 6 : Warnings at startup

Posted by André Warnier <aw...@ice-sa.com>.
Konstantin Kolinko wrote:
> 2012/6/10 André Warnier <aw...@ice-sa.com>:
>> Hi.
>>
>> This is on a Linux Debian system, Tomcat 6 installed from a Debian package.
>> /usr/share/tomcat6/bin/version.sh shows this :
>>
>> Using CATALINA_BASE:   /usr/share/tomcat6
>> Using CATALINA_HOME:   /usr/share/tomcat6
>> Using CATALINA_TMPDIR: /usr/share/tomcat6/temp
>> Using JRE_HOME:        /usr
>> Using CLASSPATH:       /usr/share/tomcat6/bin/bootstrap.jar
>> Server version: Apache Tomcat/6.0.35
>> Server built:   Jan 31 2012 04:27:38
>> Server number:  6.0.35.0
>> OS Name:        Linux
>> OS Version:     3.2.0-0.bpo.2-686-pae
>> Architecture:   i386
>> JVM Version:    1.6.0_26-b03
>> JVM Vendor:     Sun Microsystems Inc.
>> root@colin:/usr/share/tomcat6/bin#
> 
> Root? You must never run Tomcat as root.

Let the sysadmin who has never run anything as root throw me the first stone.. ;-)

But I am not running Tomcat as root, I just printed the above as root.
Tomcat 6 is running as user "tomcat6", as per :

tomcat6   6438     1  0 10:31 ?        00:00:07 /usr/lib/jvm/java-6-sun/bin/java 
-Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties 
-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath 
/usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 
-Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tomcat6-tmp 
org.apache.catalina.startup.Bootstrap start
root@colin:/usr/share/tomcat6/bin#

but I cannot login as that user on a console (shell=/bin/false).

> 
>> This Tomcat has been running fine for several months (ever since the system
>> was installed), but today I had to restart the system and Tomcat, and I
>> noticed this in the logs :
>>
>> In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these lines :
>>
>> Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory
>> validateFile
>> WARNING: Problem with directory [/usr/share/tomcat6/server/classes], exists:
>> [false], isDirectory: [false], canRead: [false]
>> Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory
>> validateFile
>> WARNING: Problem with directory [/usr/share/tomcat6/server], exists:
>> [false], isDirectory: [false], canRead: [false]
> 
> Those look very much like directories that Tomcat 5.5 uses. I would
> guess that your CATALINA_BASE is wrong. That is as if you tried to
> start Tomcat 6 with Tomcat 5.5 configuration files.

Well, not as far as I can tell. This host (a VM) was set up several months ago, directly 
with Tomcat 6.  Tomcat 5.5 was never even installed on it.
I also cannot find any reference to Tomcat 5.5 anywhere in the configuration files. 
Everything mentions Tomcat 6.
CATALINA_BASE = CATALINA_HOME = /usr/share/tomcat6, as per above version.sh output.

I know that these packages tend to put things all over the place, but in this case I 
cannot see how there could be Tomcat 5.5 leftovers.

I also ran some "grep -R tomcat5" on /etc, /var, /usr, etc..
The only thing remotely suspicious is this :

Binary file lib/apache2/modules/mod_jk.so matches

but that may just be a comment somewhere in that file.

So, what does that "org.apache.catalina.startup.ClassLoaderFactory validateFile" really 
do, that it does not seem happy ?



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


Re: Tomcat 6 : Warnings at startup

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/6/10 André Warnier <aw...@ice-sa.com>:
> Hi.
>
> This is on a Linux Debian system, Tomcat 6 installed from a Debian package.
> /usr/share/tomcat6/bin/version.sh shows this :
>
> Using CATALINA_BASE:   /usr/share/tomcat6
> Using CATALINA_HOME:   /usr/share/tomcat6
> Using CATALINA_TMPDIR: /usr/share/tomcat6/temp
> Using JRE_HOME:        /usr
> Using CLASSPATH:       /usr/share/tomcat6/bin/bootstrap.jar
> Server version: Apache Tomcat/6.0.35
> Server built:   Jan 31 2012 04:27:38
> Server number:  6.0.35.0
> OS Name:        Linux
> OS Version:     3.2.0-0.bpo.2-686-pae
> Architecture:   i386
> JVM Version:    1.6.0_26-b03
> JVM Vendor:     Sun Microsystems Inc.
> root@colin:/usr/share/tomcat6/bin#

Root? You must never run Tomcat as root.

> This Tomcat has been running fine for several months (ever since the system
> was installed), but today I had to restart the system and Tomcat, and I
> noticed this in the logs :
>
> In /var/log/tomcat6/catalina.out, at Tomcat startup, there are these lines :
>
> Jun 10, 2012 10:31:33 AM org.apache.catalina.startup.ClassLoaderFactory
> validateFile
> WARNING: Problem with directory [/usr/share/tomcat6/server/classes], exists:
> [false], isDirectory: [false], canRead: [false]
> Jun 10, 2012 10:31:34 AM org.apache.catalina.startup.ClassLoaderFactory
> validateFile
> WARNING: Problem with directory [/usr/share/tomcat6/server], exists:
> [false], isDirectory: [false], canRead: [false]

Those look very much like directories that Tomcat 5.5 uses. I would
guess that your CATALINA_BASE is wrong. That is as if you tried to
start Tomcat 6 with Tomcat 5.5 configuration files.

Best regards,
Konstantin Kolinko

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