我曾在 Ubuntu 12.04 上手动安装了 tomcat,它运行了几次,但现在出现了这个错误
alpha@TM:~/apache-tomcat-6.0.35/bin$ st
Using CATALINA_BASE: /home/alpha/apache-tomcat-6.0.35
Using CATALINA_HOME: /home/alpha/apache-tomcat-6.0.35
Using CATALINA_TMPDIR: /home/alpha/apache-tomcat-6.0.35/temp
Using JRE_HOME: /usr/lib/jvm/java-6-openjdk-i386
Using CLASSPATH: /home/alpha/apache-tomcat-6.0.35/bin/bootstrap.jar
usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop }
16 Jul, 2012 6:21:06 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:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
at java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
at java.net.Socket.<init>(Socket.java:392)
at java.net.Socket.<init>(Socket.java:206)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
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:338)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
我在 Google 和 StackOverflow 上搜索了很多次,但找不到正确的解决方案。我尝试在 conf/server.xml 中更改 tomcats 监听端口和关闭端口,但仍然没有成功。任何帮助都将不胜感激。
答案1
据我所见,tomcat 根本没有启动。看来您的脚本中有一个错误。事实上,您可以看到,在抛出异常之前,它写道:
usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop }
这意味着你的脚本用来启动(或停止)tomcat 的命令行有问题。
那么,有一个例外。这个例外是不是Tomcat 服务器出现问题。实际上是“stop”命令无法连接到任何 Tomcat 来停止,因为出现上述错误时 Tomcat 尚未启动。
当 Tomcat 正确启动时,它会监听端口 8080(或您配置的任何端口)以处理 HTTP 请求,但也会监听另一个端口(通常为 8005,仅绑定到本地主机)。此端口是“关闭端口”。当您想要关闭 Tomcat 时,脚本会启动另一个小型 Java 程序,该程序连接到端口 8005 并向正在运行的 Tomcat 发出关闭命令。
这是您看到的“连接被拒绝”异常,没有 Tomcat 可以连接,因为 Tomcat 没有运行。
事实上,如果您从未启动过 Tomcat 时发出 tomcat 停止命令,通常会看到相同的异常。
您应该检查脚本,找到执行启动命令的位置,查看它是什么样子(用 echo 替换它,查看它打印什么),并检查它是否与使用说明一致。它应该看起来像:
java -cp [some .jar files here] org.apache.catalina.startup.Catalina -config [path to config files, but it's optional] start