0

I installed tomcat9 on ubuntu 16.04, which start normally on command line,

sudo /usr/local/tomcat9/startup.sh

and all projects in webapps can be loaded.

However, it always hangs on loading "webapps/docs" if i try to start it on OS boot. Here's the snapshot of catalina.out:

catalina.out


I've tried 3 kinds of methods to auto-start tomcat.

1. setup a service in diretory init.d

1) Copy file "catalina.sh" into "/etc/init.d", and rename it to "tomcat" 2) add Evirement Virables to this file:

CATALINA_HOME=/usr/local/tomcat9
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111 

3) use command

  service tomcat start

2. setup a service in systemd

1) edit file "/etc/systemd/system/tomcat.service" enter image description here

2) load configuration in command line

   systemctl daemon-reload
   systemctl start tomat

3) check status

   systemctl status tomat

which shows tomcat service start successfully

3. Setup "rc.local" service first, and add start script in "rc.local" file

1) edit file "/etc/systemd/system/rc-local.servic"

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

2) edit file "/etc/rc.local "

  sudo /usr/local/tomcat9/bin/startup.sh

3) enable "rc.local" service

  sudo systemctl enable rc-local.service

4) reboot

All these methods gave the same result: tomcat started, but loading webapps imcomplete, hanging on loading the first app "docs".

I have no idea on it, please help.

1
  • Try Environment="CATALINA_HOME=/usr/local/tomcat9" instead of Environment=CATALINA_HOME=/usr/local/tomcat9
    – K-attila-
    Commented Jun 19, 2023 at 14:52

3 Answers 3

0

Similar behavior I once had, when on startup a different JAVA_HOME system environment variable was set.
The suspect line is this: suspect line

This looks like a different java than th one you mentioned with JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111.

I would try something like this:

  1. check your default java with update-alternatives --config java
  2. check if somewhere a JAVA_PATH is set

Further you mentioned you copied catalina.sh to /etc/init.d. This could be also a problem. In our environments (actually tomcat7, but I think it is quite similar) we have a simple script in /etc/init.d which set JAVA_HOME an start startup.sh. It looks something like that:

JAVA_HOME=/opt/jdk1.8.0_92/
export JAVA_HOME
JRE_HOME=/opt/jdk1.8.0_92/jre
export JRE_HOME

PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/opt/tomcat

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh -force
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh -force
sleep 3
sh $CATALINA_HOME/bin/startup.sh
;;

Perhaps you should consider to start startup.sh with your /etc/init.d script.

I hope gave you some input to investigate your problem further.

0

In my case (using tomcat 8.5 and systemd.service unit, without rc.local/sysv), solution was to change with:

WorkingDirectory=/opt/tomcat-foobar/
-1

One way to start the tomcat on the startup is to run it using cron using the @reboot attribute:

open up a terminal and type :

sudo crontab -e

at the end of the file enter the command:

@reboot PATH_TO_WHERE_TOMCAT_INSTALLED/bin/startup.sh

save the file and exit.

The above command will run the command once everytime computer boots up.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .