ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [오류] org.apache.catalina.LifecycleException: Protocol handler start failed
    IT/SpringBoot&AWS 2022. 5. 15. 22:25

    출처 : unsplash

     

    참고 도서 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

    참고 URL - https://github.com/jojoldu/freelec-springboot2-webservice/issues/724

     

    원인: 새로운 프로젝트가 8080 포트로 띄워야 하는데 이미 8080 포트를 사용하고 있어 기동 실패
    해결방안: 기동 전 8080 포트 사용여부 확인하여 사용 중이면 kill 후 진행할 수 있도록 조치

     

    사실 deploy.sh 스크립트에 8080 포트 사용여부 확인하는 부분이 적용되어 있어서, deploy.sh 실행 권한이 아닐까? 보안 그룹 설정 문제 아닐까? 뒤적뒤적 해봤는데.. 스크립트 명령어가 잘못 기재되어 있었다.

    ▶ pgrep -fl freelec-springboot2-webservice | grep jar | awk '{print $1}'

     

    echo "> 현재 구동 중인 애플리케이션 pid 확인"
    
    CURRENT_PID=$(pgrep -fl freelec-springboot2-webservice | grep jar | awk '{print $1}')
    
    echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID"
    
    if [ -z "$CURRENT_PID" ]; then
      echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
    else
      echo "> kill -15 $CURRENT_PID"
      kill -15 $CURRENT_PID
      sleep 5
    fi

     

    실제 콘솔에서 상기 명령어 수행 시 조회되지 않음을 확인할 수 있다. grep 시 jar가 아닌 java로 조회하면 정상 조회되는데,, jar 가 java 옵션으로  인풋된 명령어라 grep 시 잡히는게 아닌가? 라고 추측해 본다... 아무튼 명령어를 java 로 수정 후 재배포하면 정상 처리됨을 확인할 수 있다!

    [ec2-user@ip-172-31-45-74 step2]$ pgrep -fa freelec-springboot2-webservice
    28974 java -jar -Dspring.config.location=classpath:/application.properties,classpath:/application-real.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties -Dspring.profiles.active=real /home/ec2-user/app/step2/freelec-springboot2-webservice-1.0.0-SNAPSHOT-20220515130517.jar
    [ec2-user@ip-172-31-45-74 step2]$ 
    [ec2-user@ip-172-31-45-74 step2]$ 
    [ec2-user@ip-172-31-45-74 step2]$ pgrep -fl freelec-springboot2-webservice | grep jar
    [ec2-user@ip-172-31-45-74 step2]$ pgrep -fl freelec-springboot2-webservice | grep java
    28974 java

     

    명령어 수정

    ▶ pgrep -fl freelec-springboot2-webservice | grep java | awk '{print $1}'

    댓글

Designed by Tistory.