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

时间:2011-04-18 05:20:12

标签: tomcat

虽然我试图阻止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

有人可以帮我解决这个问题吗?

10 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:6)

Tomcat在重新启动之前是否正在运行?有没有其他应用程序在这个端口上监听?

抛出异常是因为没有人在命令端口上侦听(请参阅<Server port="..."中的$tomcat_home/conf/server.xml)。

答案 2 :(得分:4)

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

答案 3 :(得分: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被终止。检查防火墙,关闭脚本等。

答案 4 :(得分:1)

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

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

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

  

export CATALINA_HOME = / home / lrsprod / ELA / tomcat6 / apache-tomcat-6.0.35       $ CATALINA_HOME / bin / catalina.sh stop

添加catalina碱。

  

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

这就是诀窍。

答案 5 :(得分:1)

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

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

然后

$ sh shutdown.sh

成功完成最后一步后,必须使用命令

打开tomcat和catalina
$ sh startup.sh

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

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

我修复它在contextDestroyed停止石英,从那时起我就没有遇到过这个问题。

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

答案 8 :(得分:0)

除了防火墙或更改“ server.xml”外,我还要添加“ catalina.sh”无法连接到端口8005的另一个原因:Tomcat需要花一些时间才能开始侦听端口8005。

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

答案 9 :(得分:-1)

另一个可能的根本原因是你的tomcat尚未完全启动。

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