虽然我试图阻止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
有人可以帮我解决这个问题吗?
答案 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实例时遇到了同样的问题。
我更改了自定义关闭脚本,此问题已修复。 旧脚本: -
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)
我也遇到了这个问题。 您可以尝试以下任何步骤:
ps -A
)答案 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目录。