27

设置是:

  • 亚马逊 EC2
  • Tomcat(安全转发到 8443)
  • 阿帕奇 2.2

我运行了shutdown.sh,我没有收到任何错误。

但是当我尝试运行 startup.sh 时,我得到了这个错误:

07-Nov-2011 17:40:40 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.net.BindException: Address already in use <null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)
        at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
        at org.apache.catalina.connector.Connector.initialize(Connector.java:1022)
        at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
        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.load(Bootstrap.java:261)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:336)
        at java.net.ServerSocket.bind(ServerSocket.java:336)
        at java.net.ServerSocket.<init>(ServerSocket.java:202)
        at java.net.ServerSocket.<init>(ServerSocket.java:158)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
        ... 12 more
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardService initialize
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]
LifecycleException:  Protocol handler initialization failed: java.net.BindException: Address already in use <null>:8080
        at org.apache.catalina.connector.Connector.initialize(Connector.java:1024)
        at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
        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.load(Bootstrap.java:261)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:41 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 615 ms
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardEngine start

INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.33
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive test.war
log4j:WARN No appenders could be found for logger (StackTrace).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR Error initializing log4j: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
java.lang.UnsupportedClassVersionError: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at Config.class$(Config.groovy)
        at Config.$get$$class$grails$plugins$springsecurity$SecurityConfigType(Config.groovy)
        at Config.run(Config.groovy:116)
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardContext start
SEVERE: Context [/test] startup failed due to previous errors
07-Nov-2011 17:40:43 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/test] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive browser.war
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
SEVERE: Error starting endpoint
java.net.BindException: Address already in use <null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)
        at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565)
        at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203)
        at org.apache.catalina.connector.Connector.start(Connector.java:1095)
        at org.apache.catalina.core.StandardService.start(StandardService.java:540)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        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.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:336)
        at java.net.ServerSocket.bind(ServerSocket.java:336)
        at java.net.ServerSocket.<init>(ServerSocket.java:202)
        at java.net.ServerSocket.<init>(ServerSocket.java:158)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
        ... 12 more
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardService start
SEVERE: Failed to start connector [Connector[HTTP/1.1-8080]]
LifecycleException:  service.getName(): "Catalina";  Protocol handler start failed: java.net.BindException: Address already in use <null>:8080
        at org.apache.catalina.connector.Connector.start(Connector.java:1102)
        at org.apache.catalina.core.StandardService.start(StandardService.java:540)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        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.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:43 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
07-Nov-2011 17:40:43 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/120  config=null
07-Nov-2011 17:40:43 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2286 ms
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:42:15 org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8443

我已经尝试过命令,例如netstat -aon | grep 8080我尝试过ps -efl | grep java并使用杀死该进程kill <pid> 9 pkill java等等......

这是什么netstat -aon

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       Timer
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 10.226.122.156:22           109.58.56.15:49215          ESTABLISHED keepalive (5354.40/0/0)
tcp        0      0 :::80                       :::*                        LISTEN      off (0.00/0/0)
tcp        0      0 :::22                       :::*                        LISTEN      off (0.00/0/0)
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               off (0.00/0/0)
udp        0      0 10.226.122.156:123          0.0.0.0:*                               off (0.00/0/0)
udp        0      0 127.0.0.1:123               0.0.0.0:*                               off (0.00/0/0)
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               off (0.00/0/0)
udp        0      0 ::1:123                     :::*                                    off (0.00/0/0)
udp        0      0 fe80::1031:3cff:fe0:123     :::*                                    off (0.00/0/0)
udp        0      0 :::123                      :::*                                    off (0.00/0/0)
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     2337   @/tmp/fam-root-
unix  2      [ ACC ]     STREAM     LISTENING     409    @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    644    @/org/kernel/udev/udevd
unix  8      [ ]         DGRAM                    1513   /dev/log
unix  3      [ ]         STREAM     CONNECTED     38302
unix  3      [ ]         STREAM     CONNECTED     38301
unix  2      [ ]         DGRAM                    38297
unix  2      [ ]         DGRAM                    22149
unix  3      [ ]         STREAM     CONNECTED     2340   @/tmp/fam-root-
unix  3      [ ]         STREAM     CONNECTED     2339
unix  2      [ ]         DGRAM                    1998
unix  2      [ ]         DGRAM                    1918
unix  2      [ ]         DGRAM                    1895
unix  2      [ ]         DGRAM                    1819
unix  3      [ ]         DGRAM                    648
unix  3      [ ]         DGRAM                    647

有什么想法或指示吗?

4

13 回答 13

25

我也有同样的问题。尝试了此线程中建议的所有选项。但没有帮助。然后就跑了:

ps -awwef | grep tomcat

并发现一些陈旧的进程正在运行。我用 (-15 而不是 -9) 杀死了它

sudo kill -15 <tomcat pid from previous command>

哇!有效。重新启动tomcat没有任何问题。

于 2013-01-10T20:24:47.947 回答
16

切勿使用信号 -9 终止进程,因为这种类型的终止进程会将其资源保留在系统中,只有在服务器重新启动后才能将其删除。仅在极端紧急情况下才使用 kill -9。最好使用 kill -15,因为它可能需要一些时间来清理资源,但是您总是会正确刷新整个进程正在消耗的资源集。所以很可能,tomcat 没有工作,因为它在内存中留下了一些资源。因此,要么执行重新启动,要么尝试查找以下内容:

  • 通过 lsof 命令并用 tomcat grep 。它会向您显示任何与 tomcat 关联的东西

lsof | grep tomcat

  • 搜索文件系统上的任何 pid 锁定文件,由 tomcat 留下。
  • 也尝试发出:

lsof -i TCP | grep 8080

于 2011-11-07T21:05:21.187 回答
9

仅运行 lsof 可能还不够。我建议这个命令:

sudo lsof -i :8080

然后你可以杀死任何持有端口的进程(很可能是另一个tomcat实例)。

于 2012-08-05T01:29:27.480 回答
9

端口号在 $TOMCAT_HOME/conf/server.xml 中配置

如果端口 8080 正在使用中,请在 server.xml 文件中更改它。我在 server.xml 中看起来像这样

<Connector port="8085" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
于 2011-11-07T19:53:44.917 回答
4

仅作记录:我收到此错误(作为新手)是因为我在启动 Tomcat 之前启动了 Apache。

如果我停止 Apache,然后启动 Tomcat,然后再启动 Apache,错误就会消失。

于 2013-05-16T12:48:44.877 回答
2

输入 netstat -aon 后找到 8080 端口的 PID。然后转到任务管理器并在进程选项卡中找到 PID 的图像名称。右键单击图像名称,然后单击结束进程。现在,如果您启动服务器,它将工作。

于 2014-03-06T05:29:07.397 回答
2

我也遇到了这个问题,但就我而言,我已经从本地源中的应用程序更新了服务器中的应用程序。我已经使用上面显示的不同方法搜索了正在运行的 tomcat 实例,并杀死了所有这些实例,然后运行了几次,但没有用。

tomcat 无法正常关闭或启动的原因是应用程序源的 JDK 版本:我使用 JDK 1.8 构建它,但在我的服务器中是 1.7。用 JDK 1.7 重建我的应用程序后,我让它在本地和服务器机器上工作。希望,这些信息也可以帮助像我这样的人。

于 2016-02-23T09:51:11.683 回答
1

问题是tomcat 可能无法正常关闭。尝试在重启脚本中添加睡眠,或者在再次启动 tomcat 之前等待片刻。

于 2013-02-04T14:08:23.920 回答
1

有时 servlet 必须做大量工作才能关闭,因此,tomcat 也可能需要一些时间才能关闭。如果您在重新启动服务器之前稍等片刻,您可能会看到问题消失了。如果没有,那么 Web 应用程序可能没有响应来自 JVM 的终止信号,在这种情况下,tomcat 可能无法正确关闭。

长话短说,尝试在重启脚本中添加睡眠,或者在再次调用 start 之前稍等片刻。

于 2012-03-09T19:39:06.883 回答
0

ps -awwef | grep tomcat

为我工作

发现一些陈旧的进程正在运行。我用 (-15 而不是 -9) 杀死了它

于 2014-06-11T04:07:10.147 回答
0

最好的解决方案是使用以下命令停止运行 tomcat 实例:

杀死 $(ps -aef | grep java | grep apache-tomcat-7.0.47 | awk '{print $2}')

使用您的 tomcat 版本更改 7.0.47。它工作正常,端口号,即 8080,将很快发布。

于 2015-06-17T06:26:47.187 回答
0

我遇到了类似的问题,发现 8080 端口被用于其他一些应用程序。在 Windows 上使用netstat commnad 并查看所有正在使用的端口。

更改 server.xml 文件中的连接器端口。您可以在conf文件夹下的 tomcat 安装目录中找到此文件。打开这个文件,我的看起来如下:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

最好将端口值更改为 80 系列中的某个其他端口。希望它有效。

于 2018-02-04T07:09:19.527 回答
0

我有同样的问题,几个小时我尝试了上面提到的所有解决方案,发现没有使用端口的进程,也没有运行 tomcat 实例,而且干净的机器也显示了这个问题。

但后来我发现 server.xml 对同一端口有重复的“连接器”条目。删除它解决了我的问题。

于 2020-07-22T10:49:39.330 回答