【问题标题】:Apache Tomcat :java.net.ConnectException: Connection refusedApache Tomcat:java.net.ConnectException:连接被拒绝
【发布时间】:2011-08-07 14:44:58
【问题描述】:

当我尝试停止 tomcat 服务器时,它给出了这样的错误。

[root@server classes]# service tomcat restart
Stopping Tomcat service:  Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:       /usr
Apr 17, 2011 10:11:53 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop: 
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:381)
    at java.net.Socket.connect(Socket.java:537)
    at java.net.Socket.connect(Socket.java:487)
    at java.net.Socket.<init>(Socket.java:384)
    at java.net.Socket.<init>(Socket.java:198)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:421)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
                                                           [  OK  ]

Starting Tomcat service: Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:       /usr

谁能帮我解决这个问题?

【问题讨论】:

  • 如果您在启动后立即尝试将其关闭,则可能会发生这种情况。完全启动服务器需要一些时间。尝试检查正在运行的进程或访问服务器 URL。

标签: tomcat


【解决方案1】:

我想补充另一个原因,即“catalina.sh”将无法连接到端口 8005,除了防火墙或“server.xml”中的更改:Tomcat 开始监听需要时间端口 8005。

如果您启动 Tomcat 并尝试立即停止它,则很容易重现此场景。稍等几分钟,您会看到问题消失了,因为端口已打开。

【讨论】:

    【解决方案2】:

    这里解释了这个异常的含义: https://bz.apache.org/bugzilla/show_bug.cgi?id=27829

    总结:Java 死机,Tomcat 关闭钩子被调用,异常被抛出。

    因此,如果防火墙阻止关闭消息到达 Tomcat,Java 最终将首先死亡(例如在系统重新启动/关闭期间),并且会出现异常。

    还有其他可能性。

    就我而言,我的问题与我的 initscript (Linux) 安装不正确有关。这意味着 Java 在关机/重启期间被操作系统杀死,而不是脚本的结果。解决方法就这么简单:

    chkconfig --del initscript
    chkconfig --add initscript
    

    在修复之前,我在 rc.d 中有以下内容:

    find /etc/rc.d | grep initscript | sort
    /etc/rc.d/init.d/initscript
    /etc/rc.d/rc2.d/S85initscript
    /etc/rc.d/rc3.d/S85initscript
    /etc/rc.d/rc4.d/S85initscript
    /etc/rc.d/rc5.d/S85initscript
    

    修复后:

    find /etc/rc.d | grep initscript | sort
    /etc/rc.d/init.d/initscript
    /etc/rc.d/rc0.d/K15initscript
    /etc/rc.d/rc1.d/K15initscript
    /etc/rc.d/rc2.d/K15initscript
    /etc/rc.d/rc3.d/K15initscript
    /etc/rc.d/rc4.d/K15initscript
    /etc/rc.d/rc5.d/S85initscript
    /etc/rc.d/rc6.d/K15initscript
    

    结论:如果遇到此异常,请确保 Tomcat 正确关闭,而不是因为 Java 被终止。检查您的防火墙、关闭脚本等。

    【讨论】:

      【解决方案3】:

      对于这个连接被拒绝的问题还有一个解释,我在上面的答案中错过了。在我的情况下,我从上下文侦听器(contextInitialized)开始运行线程(石英调度程序),永远不会停止(如contextDestroyed)。

      这反过来导致相关的服务器端口被关闭,而容器继续运行(因此:服务器端口上的连接被拒绝)。

      我修复了它在contextDestroyed 中停止石英的问题,此后我再也没有遇到过这个问题。

      查看此处了解类似问题:Tomcat doesn't stop. How can I debug this?

      【讨论】:

        【解决方案4】:

        另一个可能的根本原因是你的tomcat还没有完全启动。

        如果您执行ps -ef| grep apache,您会看到服务器正在运行,如果您检查catalina.out,它将显示服务器在 123 毫秒内初始化 - 但它可能仍在您的 webapps 目录中部署应用程序。

        【讨论】:

          【解决方案5】:

          您可以尝试停止并重新开始:

          $ cd /path/apache-tomcat x.x.x/bin
          

          然后

          $ sh shutdown.sh
          

          成功完成最后一步后,您必须使用命令打开您的 tomcat 和 catalina

          $ sh startup.sh
          

          我设法用这种方式解决了我的问题

          【讨论】:

            【解决方案6】:

            根据您的 Tomcat 版本,这可能是一个 0 字节日志文件的简单问题(错误)。查看/var/log/tomcatX.Y,其中X.Y 是您正在使用的版本,并检查日志文件catalina.out 是否可读写。如果它有 0 字节并且不可访问,则只需将其删除并重新启动 Tomcat。这已经为我们解决了几次问题。

            【讨论】:

            • 在我的情况下,磁盘已满(这实际上是由 tomcat 本身引起的 - 由于访问日志文件很大),然后即使在删除日志后也无法回收磁盘,因为 tomcat 仍在运行.由于0磁盘,tomcat没有关闭。第 22 条。删除 0 字节文件有帮助。
            【解决方案7】:

            我也遇到过这个问题。 您可以尝试以下任何步骤:

            【讨论】:

              【解决方案8】:

              不确定您的问题是否已解决以及如何解决。但是我在尝试运行 tomcat 实例时遇到了同样的问题。

              • 端口未被使用。
              • 没有防火墙问题。
              • Tomcat 实例启动正常。

              我更改了自定义关机脚本,此问题已得到修复。 旧脚本:-

              导出 CATALINA_HOME=/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $CATALINA_HOME/bin/catalina.sh 停止

              为它添加了 catalina 基础。

              导出 CATALINA_BASE=/home/lrsprod/ELA/tomcat6/ela_instance 出口 CATALINA_HOME=/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $CATALINA_HOME/bin/catalina.sh 停止

              成功了。

              【讨论】:

                【解决方案9】:

                在尝试解决这个问题时,我看到了很多不充分的答案。一般的反应是“你正试图停止一些尚未启动的东西”或“一些其他程序正在你需要的端口上运行”。

                我的问题原来是我的防火墙。我什至没有考虑过这一点,但是端口 8005(用于关闭的端口,谢谢 Mindas)被阻止了。我改变了它,现在,没有更多的错误。祝你好运。

                【讨论】:

                • 这里有同样的端口问题!谢谢!
                【解决方案10】:

                Tomcat 在您重新启动之前是否正在运行?是否有任何其他应用正在侦听此端口?

                由于没有人在命令端口上侦听,因此引发异常(请参阅 $tomcat_home/conf/server.xml 中的 &lt;Server port="...")。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-09-01
                  • 2018-02-11
                  • 2020-10-01
                  • 2016-11-11
                  • 1970-01-01
                  • 2017-08-08
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多