Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

service tomcat7 start fails, but the process exists and tomcat is running

I have been trying to install tomcat7 on ubuntu docker images with apt-get install tomcat7. The installation works fine and starting tomcat from the catalina.sh works as well.

I need to start tomcat from "service tomcat7 start", which instead fails. Regardless the failure result, if I wget localhost:8080 I can see tomcat answering and if I ps -ef | grep tomcat I can see the process.

Similarly if I run service tomcat7 status it says the tomcat is not running even when it is and the PID file does exist.

I have noticed that when I start tomcat from the catalina scripts, the pid file created is called tomcat.pid, but the /etc/init.d/tomcat script would try to read tomcat7.pid.

However, forcing the name in the script to peek up the right pid file, does not solve the problem.

Has anyone else experienced this?

The ubuntu version of the docker file I am trying is not really relevant, since I have been trying with several.

Anyway the one I am mostly using are 12.10 and 14.04.

Thanks!

like image 450
valentina Avatar asked Jun 27 '14 11:06

valentina


1 Answers

In the docker Ubuntu image I am using (5506de2b643b - 14.04.1 LTS), the start-stop-daemon with the --test argument is working incorrectly and reports that tomcat is not running, even when it is.

The tomcat7 init.d script starts tomcat because start-stop-daemon --test says (correctly) tomcat is not running, but then a little later in the startup process it checks that tomcat started successfully and is running. start-stop-daemon --test now incorrectly says tomcat is not running, which causes the tomcat7 init.d script to remove the PID file.

As a result, service tomcat7 status returns false when tomcat is running because the PID file is gone, but it will return false even if the PID file is there with correct PID due to the bug in start-stop-daemon --test.

Here's an example session demonstrating the bug:

#TOMCAT PID IS 43
root@a2cf26ade2a9:/# ps -eaf | grep tomcat7
tomcat7     43     1  0 14:06 ?        00:00:04 /usr/lib/jvm/java-7-oracle/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp org.apache.catalina.startup.Bootstrap start

#PID FILE HAS CORRECT PID
root@a2cf26ade2a9:/#  cat /var/run/tomcat7.pid
43

#START-STOP-DAEMON --TEST REPORTS THAT IT WOULD START TOMCAT
root@a2cf26ade2a9:/#  start-stop-daemon --test --start --pidfile /var/run/tomcat7.pid --user tomcat7 --exec /usr/lib/jvm/java-7-oracle/bin/java
Would start /usr/lib/jvm/java-7-oracle/bin/java .

root@a2cf26ade2a9:/# echo $?
0
like image 119
lreeder Avatar answered Nov 01 '22 13:11

lreeder