1

我在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. tomcat 的进程还活着,但在我执行 ./shutdown.sh 后它没有监听 8080 端口

4

2 回答 2

7

我想到了一些可能性:

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

检查您在 /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
于 2015-12-02T05:24:00.153 回答