今天给服务器上面的内容大更新了一次,所以就重启了一下tomcat,重启后马上开始访问网站,发现无法访问,然后就准备再把tomcat重启一下,关闭服务器的时候报错了。
Using CATALINA_BASE: /root/Server/tomcat9
Using CATALINA_HOME: /root/Server/tomcat9
Using CATALINA_TMPDIR: /root/Server/tomcat9/temp
Using JRE_HOME: /usr/java/jdk-16.0.1
Using CLASSPATH: /root/Server/tomcat9/bin/bootstrap.jar:/root/Server/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Aug 01, 2021 1:43:20 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact [localhost:18005] (base port [18005] and offset [0]). Tomcat may not be running.
Aug 01, 2021 1:43:20 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Error stopping Catalina
java.net.ConnectException: Connection refused
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:576)
at java.base/sun.nio.ch.Net.connect(Net.java:565)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:645)
at java.base/java.net.Socket.connect(Socket.java:595)
at java.base/java.net.Socket.<init>(Socket.java:519)
at java.base/java.net.Socket.<init>(Socket.java:293)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:667)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:391)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:481)
这种情况一般都是服务器已经处于关闭状态,再执行./shutdown.sh导致的,还在博客上面看到有人解释是tomcat还没完全启动,就开始执行./shutdown,可以用命令netstat -antp | grep 80
来查看80端口,我的是80,一般是8080。
这种情况也有可能是短时间内一直把tomcat开开关关,结果导致它馆的时候会报这个错误,具体原因我也不清楚,解决方案大概是输入命令
netstat -anto |grep 80
然后得到
可能大家有很多TIME_WAIT的进程,等这些进程都自己结束了(不知道不结束可不可以,个人建议等它自己结束),然后手动关闭状态为LISTEN的进程
命令:
kill -9 49839(进程号)
关闭后就能正常开关Tomcat了
以后记得不要很短时间内高频开关Tomcat就行了。
以上纯属个人经验,如有不当之处,评论区指出我来更改,如果有大佬知道原因的,也可以在评论区跟大家分享