Could not contact localhost:8005. Tomcat may not be running. 最精簡高效解決方案
環境:Ubuntu18.04服務器 Tomcat8.0
翻車現場:
今天,因爲修改了一些配置文件,需要重啓Tomcat將修改加載進去,而個人比較菜,修改了好多遍才修改成功,中間不可避免的將Tomcat多次重啓,然後就遇到了下面的問題:
hadoop@ubuntu:/usr/lib/tomcat8.0/bin$ sudo ./shutdown.sh
Using CATALINA_BASE: /usr/lib/tomcat8.0
Using CATALINA_HOME: /usr/lib/tomcat8.0
Using CATALINA_TMPDIR: /usr/lib/tomcat8.0/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/lib/tomcat8.0/bin/bootstrap.jar:/usr/lib/tomcat8.0/bin/tomcat-juli.jar
Jun 04, 2020 7:19:45 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact localhost:8005. Tomcat may not be running.
Jun 04, 2020 7:19:45 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at java.net.Socket.connect(Socket.java:556)
at java.net.Socket.<init>(Socket.java:452)
at java.net.Socket.<init>(Socket.java:229)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)
分析原因:
一眼看去,以爲是我把Tomcat玩壞了,經過各種操作後發現,原來Tomcat的啓動和關閉都是需要時間的,並不是看到命令跑完Tomcat就啓動/關閉完成了,其中一種情況就是:啓動時它的後臺進程還沒有完全跑起來,這時我運行了關閉命令,然後就會出現**Could not contact localhost:8005. Tomcat may not be running.**這種詭異的錯誤。
解決方案
遇到問題不要慌,燒一壺水,沏一杯茶,回來把它再關一遍就可以了。
說白了,就是給系統充分的時間將Tomcat運行起來,然後再將其關閉。