Apache Tomcat Shutdown:java.net.ConnectException:连接被拒绝

kin*_*cky 1 java tomcat shutdown

我在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)
Run Code Online (Sandbox Code Playgroud)

我敢肯定:

  1. 在执行./shutdown.sh之前,tomcat正在运行并且运行良好

  2. tomcat的进程仍然存在,但是在执行./shutdown.sh之后它没有侦听端口8080

Ola*_*ock 7

我想到了一些可能性:

  • 您的webapp可能会启动一个不作为"守护程序"运行的线程 - 从而使进程保持活动状态.在webapp中更改此操作以使其更友好 - 或者实现在Web应用程序关闭时关闭线程的侦听器.您可以通过kill -3 pid在正在运行的tomcat进程上触发线程转储()来测试这一点,输出将(很可能)最终在catalina.out中
  • 在另一个端口上可能会运行另一个tomcat - 这就是您在ps输出中看到的内容
  • 您已经更改了"关闭"端口(请参阅tomcat server.xml) - 这就是shutdown.sh正在联系以指示tomcat关闭