【问题标题】:apache tomcat 8009 port in useapache tomcat 8009 端口正在使用中
【发布时间】:2012-01-20 12:02:25
【问题描述】:

当我在 Eclipse 上启动 tomcat 时,我收到了这条消息:

Tomcat v6.0 服务器在 localhost 所需的端口 8009 已在使用中。服务器可能已经在另一个进程中运行,或者系统进程可能正在使用该端口。要启动此服务器,您需要停止其他进程或更改端口号。

当我手动启动 tomcat 时,它会给我这个异常跟踪:

C:\apache-tomcat-6\bin>catalina.bat run
Using CATALINA_BASE:   "C:\apache-tomcat-6"
Using CATALINA_HOME:   "C:\apache-tomcat-6"
Using CATALINA_TMPDIR: "C:\apache-tomcat-6\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.6.0_20"
Using CLASSPATH:       "C:\apache-tomcat-6\bin\bootstrap.jar"
Dec 14, 2011 11:32:17 AM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.22.
Dec 14, 2011 11:32:17 AM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], r
andom [true].
Dec 14, 2011 11:32:20 AM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Dec 14, 2011 11:32:20 AM org.apache.coyote.ajp.AjpAprProtocol init
SEVERE: Error initializing endpoint
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.init(AprEndpoint.java:649)
        at org.apache.coyote.ajp.AjpAprProtocol.init(AjpAprProtocol.java:160)
        at org.apache.catalina.connector.Connector.initialize(Connector.java:104
9)
        at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a: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:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Dec 14, 2011 11:32:20 AM org.apache.catalina.core.StandardService initialize
SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
LifecycleException:  Protocol handler initialization failed: java.lang.Exception
: Socket bind failed: [730048] Only one usage of each socket address (protocol/n
etwork address/port) is normally permitted.
        at org.apache.catalina.connector.Connector.initialize(Connector.java:105
1)
        at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a: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:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Dec 14, 2011 11:32:20 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 5684 ms
Dec 14, 2011 11:32:21 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Dec 14, 2011 11:32:21 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
Dec 14, 2011 11:32:21 AM org.apache.catalina.startup.HostConfig deployDescriptor

INFO: Deploying configuration descriptor host-manager.xml
Dec 14, 2011 11:32:23 AM org.apache.catalina.startup.HostConfig deployDescriptor

INFO: Deploying configuration descriptor manager.xml
Dec 14, 2011 11:32:23 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
Dec 14, 2011 11:32:23 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
Dec 14, 2011 11:32:24 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
Dec 14, 2011 11:32:24 AM org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Dec 14, 2011 11:32:24 AM org.apache.coyote.ajp.AjpAprProtocol start
SEVERE: Error starting endpoint
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.init(AprEndpoint.java:649)
        at org.apache.tomcat.util.net.AprEndpoint.start(AprEndpoint.java:766)
        at org.apache.coyote.ajp.AjpAprProtocol.start(AjpAprProtocol.java:188)
        at org.apache.catalina.connector.Connector.start(Connector.java:1122)
        at org.apache.catalina.core.StandardService.start(StandardService.java:5
40)
        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:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Dec 14, 2011 11:32:24 AM org.apache.catalina.core.StandardService start
SEVERE: Failed to start connector [Connector[AJP/1.3-8009]]
LifecycleException:  service.getName(): "Catalina";  Protocol handler start fail
ed: java.lang.Exception: Socket bind failed: [730048] Only one usage of each soc
ket address (protocol/network address/port) is normally permitted.
        at org.apache.catalina.connector.Connector.start(Connector.java:1129)
        at org.apache.catalina.core.StandardService.start(StandardService.java:5
40)
        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:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Dec 14, 2011 11:32:24 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3966 ms
Dec 14, 2011 11:33:25 AM org.apache.coyote.http11.Http11AprProtocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
Dec 14, 2011 11:33:25 AM org.apache.coyote.ajp.AjpAprProtocol pause
INFO: Pausing Coyote AJP/1.3 on ajp-8009
Dec 14, 2011 11:33:26 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Dec 14, 2011 11:33:26 AM org.apache.coyote.http11.Http11AprProtocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
Dec 14, 2011 11:33:26 AM org.apache.coyote.ajp.AjpAprProtocol destroy
INFO: Stopping Coyote AJP/1.3 on ajp-8009
Terminate batch job (Y/N)? y

C:\apache-tomcat-6\bin>

如何解决?另一个 tomcat 没有运行,我检查了 localhost:8080。提前致谢

【问题讨论】:

    标签: java windows tomcat


    【解决方案1】:

    netstat -ntlp | grep :8009 核对以查看已在使用 8009 的进程。

    【讨论】:

    • 'grep' 不是内部或外部命令、可运行程序或批处理文件。我用窗户。是在窗户里吗?
    • @elbek 检查this
    • 对不起,我没有注意到它是 Windows。我不知道什么是 grep equiv。在窗户上。我相信 netstat 的行为类似,但请尝试不使用 | grep :8009 的命令
    • grep 不适用于 Windows,因此 OP 面临该错误,否则您是正确的 +1
    • 大致相当于windows的内联搜索命令是| find ":8009"
    【解决方案2】:

    首先杀死进程。然后检查您的 %TOMCAT_HOME%/conf/server.xml 文件。您应该将 port="8009" 替换为 port="8010"

    【讨论】:

      【解决方案3】:

      通过运行ps -ef | grep tomcatkill -9 来仔细检查进程,或者从您的任务管理器中检查是否有任何Java 进程正在运行以终止它。很可能您之前的 Tomcat 启动会话没有正常结束。

      【讨论】:

        【解决方案4】:

        适用于 Ubuntu/Linux

        第 1 步:查找使用端口 8009 的进程 ID

        netstat -lnp | grep 8009
        or
        ps -aef | grep tomcat
        

        第 2 步:使用上述结果中的进程 ID 终止进程

        kill -9 process_id
        

        适用于 Windows

        第 1 步:查找进程 ID

        netstat -ano | findstr 8009
        

        第 2 步:以管理员身份打开命令提示符并终止进程

        taskkill /F /pid process_id_from_step_1
        

        更改端口号

        如果您要并行运行两个 Apache Tomcat,然后在 Eclipse 服务器概览中更改冲突的端口号。

        1. 打开Eclipse

        2. 转到Servers panel

        1. 双击配置的服务器名称打开Overview窗口

        2. 打开Ports选项卡。您将获得以下信息:

          • Tomcat adminport

          • HTTP/1.1

          • AJP/1.3

        1. 更改AJP/1.3的冲突端口号(例如更改为9009

        2. 您可能还需要更改Tomcat admin port(例如,9005)和HTTP/1.1(例如,9090)的端口。

        3. 保存 (ctrl+s) 并启动您的服务器。

        【讨论】:

        • 非常彻底的解决方案。谢谢。
        【解决方案5】:

        您的 8009 端口已被使用。它可以是另一个 tomcat 或不同的东西。
        您应该手动终止任何 tomcat 进程。
        编辑:假设您在 Windows 平台上,使用 CTRL-ALT-Suppr 杀死所有 javaw.exe 进程

        【讨论】:

          【解决方案6】:

          检查文件夹\apache-tomcat-6.0.32\conf中的文件server.xml 会提到port address,如果是8080,请尝试将其更改为8081并启动服务器并调用localhost:8081

          server.xml 中会如下所示:

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

          【讨论】:

          • 端口号是8009不是8080,8080是免费的
          • 像我的回答一样检查HTTP协议,通常在tomcat 8009中将用于AJP协议。
          • 您甚至可以更改此端口并进行测试。如果服务器正在启动。
          • 我更改为 8011,当我通过命令行启动时它与 loclahost:8080 一起使用,但我不适用于 eclipse
          猜你喜欢
          • 2016-05-11
          • 2020-06-19
          • 2012-01-22
          • 2012-11-22
          • 2017-09-18
          • 2022-01-03
          • 2014-04-24
          • 1970-01-01
          相关资源
          最近更新 更多