Tomcat java.net.BindException : Java에서 이미 사용중인 주소 오류

1. 개요

이 빠른 자습서에서는 일반적인 java.net.BindingException 오류 : Address already in Use 오류의 원인과이를 처리하는 방법에 대해 알아 봅니다.

2. 오류는 언제 발생합니까?

아시다시피 Apache Tomcat 서버는 기본적으로 8080 포트를 사용합니다.

포트 번호의 범위는 0 ~ 65535이지만 한 번에 하나의 애플리케이션 만 포트를 점유 할 수 있습니다 .

예외는 응용 프로그램이 다른 프로세스에서 이미 가져온 포트를 사용하려고하거나 Tomcat 서버를 제대로 중지하지 않았 음을 나타냅니다.

3. 진단

이 오류를 해결하려면 해당 포트를 사용하는 서비스를 종료하거나 다른 포트에서 실행되도록 웹 서버를 변경할 수 있습니다.

3.1. 갈등 발견

이 경우 포트를 사용하는 응용 프로그램을 찾아야합니다.

NETSTAT 명령은 현재 TCP / IP 연결을 발견 사용할 수 있습니다.

다음은 다른 환경에서 프로세스를 찾고 종료하는 데 사용할 수있는 명령입니다.

Windows에서 출력의 마지막 열은 현재 8080에서 실행중인 서비스의 프로세스 ID를 제공합니다.

netstat -ano | find "8080"

산출:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

여기서 21376은 포트 8080에서 수신 대기중인 프로세스의 프로세스 ID입니다.

Unix / Linux 환경 :

netstat -pant | grep "8080"

산출:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

Windows 출력과 동일합니다. 여기서 21376은 포트 8080에서 수신 대기중인 프로세스의 프로세스 ID입니다.

Mac OS X :

lsof -t -i :8080

산출:

21376

PID 만 표시합니다.

3.2. 다른 포트에서 서버 실행

어떤 프로세스가 실행되고 있는지, 왜 실행되고 있는지, 해당 포트에서 실행되어야 하는지를 알고 있다면 서버 애플리케이션이 실행하려는 포트를 변경할 수 있습니다.

Tomcat 포트를 변경하려면 server.xml 파일 을 편집해야 합니다. 이것을하기 위해:

  • tomcat / conf 폴더 열기
  • server.xml 편집
  • 커넥터 포트새 포트로 교체하십시오.
  • Tomcat 서버를 다시 시작하십시오.

의 server.xml 파일은 다음과 같습니다 :

이제 Tomcat이 사용자 정의 된 포트에서 실행됩니다.

3.3. 실행중인 서비스 죽이기

실행중인 프로세스를 중지하려면 kill 명령을 사용할 수 있습니다 .

3.1.에서 찾은 프로세스 ID를 사용하여 실행중인 운영 체제에 따라 다른 명령이 필요합니다.

Windows 환경 :

taskkill /F /PID 21376

Unix / Linux 환경 :

kill - 21376

Mac OS X 환경 :

kill -9 21376

4. 결론

기사의 시작 부분에서 언급했듯이 java.net.BindingException 은 널리 퍼져 있지만 쉽게 해결되는 오류입니다.

가장 큰 어려움은 netstat 터미널 응용 프로그램 과 함께 포트를 사용하여 충돌하는 서비스를 찾은 다음 적절한 조치를 결정하는 것입니다.

일단 발견되면 쉽게 수정할 수 있습니다.