我在centos 5.8上安装了tomcat 7。
然后我执行了./startup.sh和./shutdown.sh,它运行良好。
然后,我在webapps /下放了一个something.war。它也运作良好。
但是当我关闭tomcat时,它不起作用并抛出异常:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:499)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:371)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:453)
而且我敢肯定:
Tomcat正在运行并在执行./shutdown.sh之前运行良好
在执行./shutdown.sh之后,tomcat的进程仍然有效,但是它没有监听端口8080。
最佳答案
我想到了一些可能性:
您的webapp可能启动了一个没有作为“守护程序”运行的线程-从而使进程保持活动状态。在webapp中将此更改为更友好-或实现一个侦听器,以在webapp关闭时关闭线程。您可以通过在正在运行的tomcat进程上触发线程转储(kill -3 pid
)进行测试,输出(最有可能)最终在catalina.out中结束
可能在另一个端口上正在运行另一个tomcat-这就是您在ps
输出中看到的内容
您已更改“ shutdown”端口(请参见tomcat的server.xml
)-这是shutdown.sh正在联系的状态,以指示tomcat关闭
关于java - Apache Tomcat关闭:java.net.ConnectException:连接被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13946753/