본문 바로가기

웹개발/Java

[이클립스] 서버구동시 포트 충돌에 대한 대처 방법

 
이클립스를 사용하여 개발 하던 도중 잘 동작하던 톰캣 서버가 
톰캣 서버를 내렸으나 제대로 내려 가지 않았을 경우, 
이클립스가 알 수 없는 에러에 의해서 멈추는 경우, 
혹은 다른 이유에 의해서, 
다시 서버를 올리려고 하면 이미 해당 포트가 사용중이라는 에러가 발생합니다.



위 에러는 임의로 발생시켰습니다. 

저는 8081 포트를 사용하고 있음을 알려드립니다.

이런 에러가 발생 했을 경우, 사실 가장 간단한 방법은 컴퓨터를 껏다가 키는겁니다.

왜냐하면 계속 잘 되던 톰캣서버가 일시적으로 안되는 것이니까요.

컴퓨터를 껏다가 키면 해당 포트는 다시 사용 가능 해 질 것입니다.

하지만 우리는 개발자인데 굳이 컴퓨터까지 껏다가 킬 필요가 있을까요?

개발자 답게 한번 해결해 보겠습니다.

우선 바탕화면에서 '윈도우버튼 + r' 키를 눌러주세요.

그러면 아래와 같은 화면이 나올 겁니다.



이곳 텍스트 박스에 'cmd' 라고 입력해 주세요.

그리고 확인 버튼을 누르시면 아래와 같이 도스 명령 프롬프트 창이 나올겁니다.


이 곳에서 명령어를 하나 입력할겁니다.

명령어는 netstat -a -o를 입력해 줍니다.

※ netstat 명령어에 대해 알려주는 글은 아니기에 궁금하신 분은 구글검색을 부탁드립니다.

그러면 아래 스샷과 같이 나올겁니다.


위 그림에서 로컬 주소에서 내가 사용하는 톰캣 서버를 올릴 때 주로 사용하는 포트번호를 찾습니다.

주로 8080 포트일겁니다. 

해당 포트번호를 찾고 상태값PID를 주의깊게 봐줍니다.


상태값이 LISTENING이면 사용중이라는 것을 의미합니다.

근데 우리는 8080 포트를 사용해서 톰캣서버를 올려야 하니까, 8080포트가 사용중이면 안됩니다.

그러면 우리가 다시 8080포트를 사용하기 위해서는, 현재 살아있는 8080포트를 죽여야 합니다.

그 때 필요한 것이 PID입니다. 

참고로 PID는 Process ID의 약자입니다.

PID를 활용해서 8080포트를 한번 죽여보겠습니다.

명령프롬프트 창에 명령어로 

taskkill /f /pid 3312 (본인 화면에 적힌 8080포트 pid) 를 적고 엔터를 치시면 됩니다.

한번 해보겠습니다.


저는 한번에 성공했습니다.

그리고 이클립스에서 톰캣서버를 올리니까 정상 실행 됐습니다.

혹시 taskkill 이라는 명령어를 쳤는데,

'엑세스가 거부됐다' 는 문구가 나오면 cmd 창을 관리자 권한으로 열어주시면 되는데,

cmd창을 관리자 권한으로 여는 방법은 



이렇게 열어주시고

위 과정을 한번 더 해주시면 해당 포트가 정상 삭제 될겁니다.

그리고 서버를 다시 구동 시켜보면 정상 구동 될겁니다.