오늘의 오류

[톰캣 에러] 톰캣 실행 시 충돌 오류(포트번호 충돌)

애해 2021. 1. 18. 17:44
728x90

# 발생 상황

새로운 프로젝트를 생성하고나서 톰캣을 구동하려고 했을 때 오류가 발생했다.

2021-01-18 15:43:10.279 ERROR 1500 --- [main] org.apache.catalina.util.LifecycleBase   : Failed to start component [Connector[HTTP/1.1-8080]]

org.apache.catalina.LifecycleException: Protocol handler start failed
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1008) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) [tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:263) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:195) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) [spring-context-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
	at com.jins.book.springboot.Application.main(Application.java:10) [main/:na]
Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_241]
	at sun.nio.ch.Net.bind(Net.java:433) ~[na:1.8.0_241]
	at sun.nio.ch.Net.bind(Net.java:425) ~[na:1.8.0_241]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[na:1.8.0_241]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_241]
	at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:230) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:213) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:585) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
	... 14 common frames omitted

2021-01-18 15:43:10.283  INFO 1500 --- [main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2021-01-18 15:43:10.292  INFO 1500 --- [main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-01-18 15:43:10.303 ERROR 1500 --- [main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8080, or configure this application to listen on another port.

2021-01-18 15:43:10.305  INFO 1500 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 1

 

# 발생 원인

기존에 실행중인 프로세스의 포트번호(8080)와 새로운 프로젝트의 포트번호(8080)가 동일해서 톰캣이 충돌한 것이다. 

 

# 해결 방안

해결하기 위해서는 2가지 방법이 있다.

 

- 1번 : 기존에 진행중인 프로세스를 중지한다.

- 2번 : 새로 시작하려는 톰캣의 포트번호를 변경한다. 

 

필자는 기존에 구동중인 프로세스가 중요한 프로세스가 아니기에 1번의 방법을 사용했다. 

 

1. [윈도우키 + R] 실행창을 열고 'cmd'를 입력한다. 

 

 2. 필자의 경우 충돌하는 포트번호가 8080이다. cmd창에서 'netstat -ano | findstr 8080' 를 입력해서 실행중인 프로세스 PID를 확인한다. 

 

3. PID를 확인 후 'taskkill /F /PID포트번호'를 입력해서 해당 프로세스를 중지시킨다.

 

4. 프로세스를 중지 후 톰캣을 실행하면 잘 돌아간다. 

 

# 추가

하지만 필자는 별도의 계정으로 진행했기 때문에 액세스가 거부되었다.

이 경우 관리자 계정으로 진행해야 한다. 

<일반 계정에서 진행한 경우, 프로세스를 종료할 수 없었다>

 

1. [윈도우 키 + R] cmd 입력 후 [Ctrl + Shift  + Enter]을 누르고 실행하면 관리자 권한으로 들어간다. 

<관리자 권한으로 접속한 cmd창이다>

 

2. 프로세스를 중지하는 명령어를 다시 입력해준다. 깔꼬롬하게 종료된다. 야호

 

반응형