Hi All,

I seem to be having troubles getting Tomcat 8.5 to start on an Amazon Linux 2 
server with systemctl.  The problem seems to be that after starting tomcat, it 
always immediately tries to shut down.  From /var/log:

Jan 22 23:13:32 cloud systemd: Starting Tomcat 8.5 servlet container...
Jan 22 23:13:32 cloud startup.sh: Tomcat started.
Jan 22 23:13:32 cloud systemd: Started Tomcat 8.5 servlet container.
Jan 22 23:13:33 cloud shutdown.sh: Jan 22, 2019 11:13:33 PM 
org.apache.catalina.startup.Catalina stopServer
Jan 22 23:13:33 cloud shutdown.sh: SEVERE: Could not contact 
[localhost:[8005]]. Tomcat may not be running.
Jan 22 23:13:33 cloud shutdown.sh: Jan 22, 2019 11:13:33 PM 
org.apache.catalina.startup.Catalina stopServer
Jan 22 23:13:33 cloud shutdown.sh: SEVERE: Catalina.stop:
Jan 22 23:13:33 cloud shutdown.sh: java.net.ConnectException: Connection 
refused (Connection refused)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.net.PlainSocketImpl.socketConnect(Native Method)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
Jan 22 23:13:33 cloud shutdown.sh: at java.net.Socket.connect(Socket.java:589)
Jan 22 23:13:33 cloud shutdown.sh: at java.net.Socket.connect(Socket.java:538)
Jan 22 23:13:33 cloud shutdown.sh: at java.net.Socket.<init>(Socket.java:434)
Jan 22 23:13:33 cloud shutdown.sh: at java.net.Socket.<init>(Socket.java:211)
Jan 22 23:13:33 cloud shutdown.sh: at 
org.apache.catalina.startup.Catalina.stopServer(Catalina.java:503)
Jan 22 23:13:33 cloud shutdown.sh: at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Jan 22 23:13:33 cloud shutdown.sh: at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Jan 22 23:13:33 cloud shutdown.sh: at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Jan 22 23:13:33 cloud shutdown.sh: at 
java.lang.reflect.Method.invoke(Method.java:498)
Jan 22 23:13:33 cloud shutdown.sh: at 
org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406)
Jan 22 23:13:33 cloud shutdown.sh: at 
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:498)
Jan 22 23:13:33 cloud shutdown.sh: The stop command failed. Attempting to 
signal the process to stop through OS signal.
Jan 22 23:13:34 cloud shutdown.sh: Tomcat stopped.

However, I can manually start tomcat on the same server, which works fine, e.g.:

# cd /opt/tomcat/bin
# ./catalina.sh start
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       
/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.

# ps -aef | grep java
root      8598     1 50 23:17 pts/0    00:00:02 /usr/bin/java 
-Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
-Djdk.tls.ephemeralDHKeySize=2048 
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources 
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 
-Dignore.endorsed.dirs= -classpath 
/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar 
-Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat 
-Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

And it stays running until I explicitly shut it down.  However, what is most 
odd is that I also have tomcat 8.5 running on a DIFFERENT system, which was 
built with a generic CentOS 7.5 download (vs. an Amazon Linux 2 EC2 server), 
but USING THE SAME SERVICE FILE.  I was under the impression that the Amazon 
Linux 2 is based on CentOS 7.

Or, at least I can’t find the difference.  And while Google’ing around, I did 
find other mentions of the exact same problem, whereby tomcat tries to 
immediately shut down after starting up, but alas without a posted solution.  I 
was wondering if anyone out there might have come across this problem, and have 
any advice?

Also, the one difference was that on CentOS 7 — which works — I am using Oracle 
Java 8 java installed on /opt/java, and on AWS — which does not work — I was 
using OpenJDK 8.  However, I have also tried installing the same Oracle Java 8 
on Amazon Linux 2 in /opt/java, and then changing:

Environment="JAVA_HOME=/opt/java“

and have the exact same problem.  So I am running out of things to try!

Actually, one other minor difference is that the CentOS 7.5 server has tomcat 
8.5.34 and the AWS server has tomcat 8.5.37, and I am assuming that the 
difference in patch level is not relevant, but am mentioning it nonetheless.

Finally, nothing else is currently running on port 8080, e.g.:

# telnet localhost 8080
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

The only thing I see written to /opt.tomcat/logs/catalina.out is:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256m; 
support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=384m; 
support was removed in 8.0

Which tells me that it is finding the JVM, but that I have to remove the 
PermGen parameters (but I am leaving in as an indication that the JVM is being 
run, but that the warning should not be causing my problem because it is 
ignoring the obsolete parameters).

I am documenting first what works (CentOS 7.5), followed by what doesn’t work 
(AWS).  If anyone has any ideas, or can spot the difference, or has any ideas 
on what else I can check, please let me know.

Thanks,

Dave Filip
dfi...@colornet.com
+1-212-338-0535


==========================================================

CentOS 7.5 with Tomcat 8.5.34 (WORKS)

# /opt/java/bin/java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

/usr/lib/systemd/system/tomcat.service:

[Unit]
Description=Tomcat 8.5 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=www

Environment="JAVA_HOME=/opt/java"
#Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512m -Xmx640m -XX:PermSize=256m 
-XX:MaxPermSize=384m"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
[root@proteus system]# pwd
/usr/lib/systemd/system

==========================================================

Amazon Linux 2 with Tomcat 8.5.37 (FAILS)

# /usr/lib/jvm/jre/bin/java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

/usr/lib/systemd/system/tomcat85.service:

[Unit]
Description=Tomcat 8.5 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=www

Environment="JAVA_HOME=/usr/lib/jvm/jre"
#Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512m -Xmx640m -XX:PermSize=256m 
-XX:MaxPermSize=384m"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

#SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

# systemctl start tomcat85
# systemctl status tomcat85
● tomcat85.service - Tomcat 8.5 servlet container
   Loaded: loaded (/usr/lib/systemd/system/tomcat85.service; disabled; vendor 
preset: disabled)
   Active: inactive (dead)

Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
java.net.Socket.<init>(Socket.java:434)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
java.net.Socket.<init>(Socket.java:211)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
org.apache.catalina.startup.Catalina.stopServer(Catalina.java:503)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
java.lang.reflect.Method.invoke(Method.java:498)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: at 
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:498)
Jan 22 22:33:03 cloud.colornet.com shutdown.sh[8245]: The stop command failed. 
Attempting to signal the process to stop through OS signal.

# grep tomcat /etc/passwd
tomcat:x:301:300:Tomcat:/opt/tomcat:/bin/bash

# grep www /etc/group
www:x:300:

==========================================================

Reply via email to