Windows tomcat 8将不会在自由端口上启动

Windows tomcat 8将不会在自由端口上启动,windows,tomcat,startup,Windows,Tomcat,Startup,问题 停止->通过windows服务启动tomcat 8失败,因为tomcat关机一直以“不可见”状态侦听端口8080,而tomcat无法启动,因为它无法绑定到端口8080 背景 我们重新启动tomcat windows服务的一个构建脚本几周前开始失败。度假回来后,我现在正试图解决这个问题。据我所知,tomcat配置没有做任何更改 重现问题 Tomcat关闭clean(通过windows服务停止),无错误: 10-Aug-2018 19:30:56.860 INFO [Thread-4] org

问题

停止->通过windows服务启动tomcat 8失败,因为tomcat关机一直以“不可见”状态侦听端口8080,而tomcat无法启动,因为它无法绑定到端口8080

背景

我们重新启动tomcat windows服务的一个构建脚本几周前开始失败。度假回来后,我现在正试图解决这个问题。据我所知,tomcat配置没有做任何更改

重现问题

Tomcat关闭clean(通过windows服务停止),无错误:

10-Aug-2018 19:30:56.860 INFO [Thread-4] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-apr-8080"]
10-Aug-2018 19:30:56.860 INFO [Thread-4] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-apr-8009"]
10-Aug-2018 19:30:56.923 INFO [Thread-4] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
10-Aug-2018 19:30:56.985 INFO [Thread-4] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]
所有tomcat端口都是免费的:

C:\Windows\system32>netstat -abno | find "80"
TCP    0.0.0.0:49160          0.0.0.0:0              LISTENING       1180
TCP    [::]:49160             [::]:0                 LISTENING       1180
UDP    0.0.0.0:123            *:*                                    980
UDP    [::]:123               *:*                                    980
我们可以看到默认的tomcat端口8080是空闲的(列表中不存在)

windows报告要停止的“apache tomcat”服务

任务管理器没有“tomcat8w.exe”的进程

我通过启动windows服务启动tomcat,并在catalina日志中获得以下内容:

10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.32
10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Feb 2 2016 19:34:53 UTC
10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.32.0
10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows Server 2012 R2
10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.3
10-Aug-2018 19:36:50.018 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             d:\ng\jre
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_73-b02
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         D:\ng\tomcat
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         D:\ng\tomcat
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=D:\ng\tomcat
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=D:\ng\tomcat
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=D:\ng\tomcat\endorsed
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=D:\ng\tomcat\temp
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManage
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=D:\ng\tomcat\conf\logging.proper
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: exit
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms1024m
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx6144m
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.2.4 using APR version 1.5.1.
10-Aug-2018 19:36:50.033 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [
10-Aug-2018 19:36:50.549 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized (OpenSSL 1.0.2e 3 Dec 2015)
10-Aug-2018 19:36:50.674 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
10-Aug-2018 19:36:50.674 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
 java.lang.Exception: Socket bind failed: [730048] Only one usage of each socket address (protocol/network address/port) is normally permitted.
        at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:471)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:742)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:458)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:580)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:603)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)

10-Aug-2018 19:36:50.689 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:580)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:603)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        ... 12 more
Caused by: java.lang.Exception: Socket bind failed: [730048] Only one usage of each socket address (protocol/network address/port) is normally permitted.
        at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:471)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:742)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:458)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
        ... 13 more

10-Aug-2018 19:36:50.689 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-apr-8009"]
10-Aug-2018 19:36:50.689 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 971 ms
然后开始部署应用程序。启动后,我运行:

C:\Windows\system32>netstat -abno | find "80"
TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       5040
TCP    0.0.0.0:49160          0.0.0.0:0              LISTENING       1180
TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING       5040
TCP    127.0.0.1:55979        127.0.0.1:55980        ESTABLISHED     5040
TCP    127.0.0.1:55980        127.0.0.1:55979        ESTABLISHED     5040
TCP    172.17.104.53:56029    172.17.10.154:8014     CLOSE_WAIT      1488
TCP    [::]:49160             [::]:0                 LISTENING       1180
UDP    0.0.0.0:123            *:*                                    980
UDP    [::]:123               *:*                                    980
我可以看到端口8009绑定到PID 5040,在taskmanager中是“tomcat8.exe”,但正如您所看到的,端口8080是空闲的,但由于错误而未绑定:

10-Aug-2018 19:36:50.674 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
10-Aug-2018 19:36:50.674 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
 java.lang.Exception: Socket bind failed: [730048] Only one usage of each socket address (protocol/network address/port) is normally permitted.
因此,此时构建脚本已成功执行,windows报告apache tomcat服务正在运行,但tomcat尚未绑定到端口8080,因此未接收任何新请求

解决方法

如果我重新启动Windows(服务器),tomcat服务将毫无问题地启动,tomcat将在端口8080上侦听

下一步

tomcat无法绑定到自由端口8080的原因是什么

或者什么可以阻止windows显示阻止端口8080的用户/用户


以前的tomcat实例如何阻止端口8080,但windows没有显示任何正在运行的tomcat实例?

听起来很像,但这个问题有更好的细节。请发布您的
conf/server.xml
,删除所有机密。很好的帖子。一些评论:[1]如果Tomcat已经运行,则启动Tomcat时通常不会看到您的错误,即“java.net.BindException:Address ready in use:net_Bind”[2]您的异常(异常)类型为exception,并且相关的错误消息(“套接字绑定失败:[730048]只有一种用法…”)不是来自java或Tomcat;它来自Windows,因此请尝试查看Windows事件日志以了解更多信息,包括之前的关机。[3] 为您的Tomcat和Windows版本添加标记,并按照Christopher的建议显示server.xml。看起来微软打败了你们。请看@ChristopherSchultz Good find。让我与基础架构团队核实一下,看看我们是否安装了windows修补程序,如果没有,请安装并报告。