[톰캣에러해결] java.net.BindException: 주소가 이미 사용 중입니다 (Bind failed)

java.net.BindException 주소가 이미 사용중입니다 에러 해결방법

 

회사 톰캣서버를 재기동 할일이 생겨서 sh shutdown sh 명령어로 톰캣 기동을 중지시켰습니다.


빌드를 시작하고 sh startup sh 명령어를 입력하고 톰캣이 잘 올라가나 로그를 보고있는데 응? 에러가 발생?

 

로그를 살펴보니 주소가 이미 사용중이라는 에러가 발생하였습니다.

심각: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8012"]
java.net.BindException: 주소가 이미 사용 중입니다 (Bind failed) <null>:8012
	at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:411)
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
	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:280)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
Caused by: java.net.BindException: 주소가 이미 사용 중입니다 (Bind failed)
	at java.net.PlainSocketImpl.socketBind(Native Method)
	at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
	at java.net.ServerSocket.bind(ServerSocket.java:375)
	at java.net.ServerSocket.<init>(ServerSocket.java:237)
	at java.net.ServerSocket.<init>(ServerSocket.java:181)
	at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
	at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
	... 16 more

 

톰캣 중지 스크립트를 실행하였으나, 톰캣이 죽지 않았나봅니다...

 

해결방법은 강제로 톰캣을 중지 시키면 됩니다.

 

톰캣 실행한 곳이 Window 일경우

1. 명령픔롬프트창을 엽니다. 단축키(윈도우키+R > 실행창에 cmd 입력)

2. netstat -ano | find "톰캣포트" 를 입력합니다. ex) netstat -ano | find 8080

3. kill 톰캣포트 (tomcat KILL명령어) ex) kill 8080

4. tomcat 재기동

 

톰캣의 포트가 실행중이면 LISTENING 이 나옵니다.

톰캣이 실행중이지 않으면 아무것도 나오지 않습니다. 

KILL 명령어로 포트를 죽인 다음에 다시 톰캣을 기동하면 됩니다.

 

톰캣 실행한 곳이 리눅스 일경우

1. px -ux 명령어를 입력합니다.

2. 현재 실행중인 프로세스가 나오게 되는데 command에 현재 실행중인 톰캣목록이 나오게 됩니다.

3. kill할 톰캣의 왼쪽상단에 있는 pid를 찾습니다

4. kill -9 pid  ex) kill -9 14620

5. tomcat 재기동

 

kill -9 는 kill의 명령어 시그널 입니다.

kill - [SIGNAL] PID

실행중인 특정 프로세스에게 시그널을 함께 보내는것이지요.

시그널 리스트는 " kill -l "명령어를 통해 확인하실 수 있습니다.

 

 

댓글

Designed by JB FACTORY