톰캣 시작시 포트 충돌 에러
톰캣을 시작할 때 다음과 같이 포트 에러가 발생할 수 있습니다.
이유는 정말 단순하게 톰캣이 사용하는 8080포트를 이미 다른 프로세스에서 점유하고 있기 때문입니다.
14-Feb-2018 18:18:30.646 정보 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
14-Feb-2018 18:18:30.655 심각 [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
java.lang.Exception: Socket bind failed: [730013]
atorg.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:471)
atorg.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:748)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:476)
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:869)
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:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
14-Feb-2018 18:18:30.657 심각 [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:107)
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:869)
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:498)
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)
해결 방법
톰캣을 실행시키려면 기존에 8080 포트를 사용하는 프로세스를 종료시켜 주어야 합니다.
만약 8080포트를 사용하고 있는 프로세스가 중요한 프로세스인 경우 해당 프로세스의 사용 포트를 변경해 주거나, 현재 실행시키려는 톰캣의 포트를 변경하시기 바랍니다. -> [Tomcat] 톰캣 8080 포트 변경하기
8080포트를 사용하는 프로세스 중지하기
1. 키보드에서 윈도우 시작 버튼 + R 을 눌러 실행창을 띄웁니다.
2. cmd 라고 치고 확인을 누릅니다.
3. netstat -ano 라고 치고 엔터를 눌러줍니다.
4. 다음과 같이 네트워크 상태가 나옵니다.
5. 현재 목록 중 8080 포트 를 사용중인 프로세스를 찾습니다.
아래로 쭈욱 내리다 보니 127.0.0.1:8080 즉 내 로컬에서 8080포트를 사용중이고 해당 포트를 사용중인 프로세스의 PID는 4920으로 확인되었습니다.
6. taskkill /F /PID 4920 명령어로 해당 프로세스를 종료 합니다.
7. 이제 8080포트를 사용하는 프로세스를 강제로 죽였으니 서버를 시작해보면 정상 작동할 것입니다.
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] 웹 어플리케이션 개념 및 웹 어플리케이션 경로 규칙 (0) | 2018.02.17 |
---|---|
[Tomcat] 톰캣 8080 포트 변경하기 (0) | 2018.02.16 |
[서블릿/JSP] JSP 출력 버퍼란 (0) | 2018.02.16 |
[서블릿/JSP] JSP 리다이렉트로 페이지 이동시키기 (1) | 2018.02.15 |
[서블릿/JSP] 서블릿 JSP 웹 브라우저 캐시 제어하기 (0) | 2018.02.14 |