【问题标题】:Apache Tomcat Shutdown :java.net.ConnectException: Connection refusedApache Tomcat 关闭:java.net.ConnectException:连接被拒绝
【发布时间】:2012-12-19 06:32:03
【问题描述】:

我在 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)

我敢肯定:

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

  2. 执行./shutdown.sh

  3. 之后,tomcat的进程还活着,但是没有监听8080端口

【问题讨论】:

  • 不,我关闭了它,但进程仍然存在。
  • 你为什么认为它还活着?
  • 确保您在使用 linux 时拥有足够的权限。
  • 使用命令'ps',我可以看到它。

标签: java tomcat shutdown


【解决方案1】:

我想到了一些可能性:

  • 您的 web 应用程序可能会启动一个不作为“守护程序”运行的线程 - 从而使进程保持活动状态。在 webapp 中更改它以表现得更友好 - 或者实现一个监听器,当你的 webapp 关闭时关闭线程。您可以通过在运行的 tomcat 进程上触发线程转储 (kill -3 pid) 来测试这一点,输出将(很可能)以 catalina.out 结束
  • 可能有另一个 tomcat 在不同的端口上运行 - 这就是您在 ps 输出中看到的内容
  • 您已更改“关闭”端口(请参阅 tomcat 的 server.xml) - 这就是 shutdown.sh 联系以指示 tomcat 关闭

【讨论】:

  • 我猜这是因为一个非守护线程,我会检查它。谢谢!
  • 检查了 ActiveMQ 线程没有作为守护进程运行。所以也许这就是问题所在。谢谢
  • 我还注意到tomcat也产生了一些非守护线程,停止tomcat时会出现问题
  • 我希望 tomcat 知道如何拆除自己的线程。如果可以强制关闭线程,则只需要“守护程序”,例如当他们不在乎 tomcat 是否在他们周围下降时 - 从而保持进程活着。
【解决方案2】:

检查您在 /etc/hosts 中是否有 127.0.0.1 的 localhost

我以前是这样的

127.0.0.1   centosIGW localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

在我将 localhost 添加到 127.0.0.1 后它可以工作

127.0.0.1   centosIGW localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2015-05-18
    • 2018-06-10
    • 1970-01-01
    • 2023-03-21
    • 2017-08-10
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多