第一次使用服务器,按照教程安装JDK、MySQL和Tomcat,调试功能过程发现结束进程shutdown.sh运行报错,并且此时启动Tomcat,在8080端口也无法访问Tomcat,几番折腾才解决了这个问题。
报错信息如下:
Dec 18, 2021 9:00:45 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Error stopping Catalina
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:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.(Socket.java:434)
at java.net.Socket.(Socket.java:211)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:667)
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:391)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:481)
在搜索各种教程后发现都是使用了结束Java相关 PID 的方法,说结束后即可shutdown,但是测试后还是失败。
# 查找
ps -aux | grep java
# 查找结果
root 3084 0.6 2.0 3424720 80428 pts/0 Sl 20:49 0:01 /usr/development_tools/jdk1.8.0_202/jre/bin/java -Djava.util.logging.config.file=/usr/development_tools/apache-tomcat-9.0.56/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 /usr/development_tools/apache-tomcat-9.0.56/bin/bootstrap.jar:/usr/development_tools/apache-tomcat-9.0.56/bin/tomcat-juli.jar -Dcatalina.base=/usr/development_tools/apache-tomcat-9.0.56 -Dcatalina.home=/usr/development_tools/apache-tomcat-9.0.56 -Djava.io.tmpdir=/usr/development_tools/apache-tomcat-9.0.56/temp org.apache.catalina.startup.Bootstrap start
root 3483 0.0 0.0 112644 968 pts/0 S+ 20:54 0:00 grep --color=auto java
# 结束进程
kill -9 3084
最后在stackoverflow上找到了解决方法:
I just answered this question under another question.
I solved it today,it maybe a bug with jdk-1.8.x.
For example,my jdk path is "/usr/java/jdk1.8.0_144".
cd /usr/java/jdk1.8.0_144/jre/lib/security/
find the file which named "java.security",
vi java.security
find "securerandom.source=file:/dev/random".
Modify "securerandom.source=file:/dev/./urandom ".
Then,go to the Tomcat/bin directory, execute
./start.sh
and./shutdown.sh
,find that everything is all right.
内容很简单,说的是在修改jdk中的java.security,
vi /JDK目录/jre/lib/security/
进入后找到
securerandom.source=file:/dev/random
修改为
securerandom.source=file:/dev/./urandom
保存退出,即可正常使用。
参考链接:
java - SEVERE: Could not contact localhost:8005. Tomcat may not be running error while shutting down - Stack Overflow