[IntelliJ Error] WAR 배포 및 톰캣 실행 시, Context Initialization Failed 오류 발생

     

    [문제발생]

    운영서버 내 WAR 배포 및 톰캣 실행 시, Context Initialization Failed 오류 발생

     

    [문제분석]

    1. 테스트 서버 내 ROOT.tar 배포

    2. CommandLine으로 WAR로 파일 묶기

    3. 묶인 WAR 파일을 다시 테스트 서버 내 배포하여 톰캣 실행 결과, 정상 작동됨.

    => 결론: 인텔리제이 내 설정 문제

     

    [원인 및 조치사항] 

    소스코드 위치를 외장하드가 아닌 C로 변경 후 로컬 PC에서 ROOT.war 파일 생성 시 정상적으로 확인됨

    결과적으로 소스코드가 외장하드에 있어 +정상적으로 class파일이 compile이 되지 않아 해당 문제가 발생하였음.

     

    [해결방안]

    -> war파일 생성 시, SRC 경로는 반드시 외장하드가 아닌 C 드라이브 등 로컬 디스크에 설정할 것 


    [시행착오] 

     

    2022.04.02

    1. Settings > Inspections > Reports issues with the Spring Framework XML-based application context:

    2. compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'

    3. gradle: org.mindrot:jbcrypt:0.3m 추가

     

    2022.04.10

    인텔리제이 설정의 문제임을 검증

    1. 인텔리제이에서 war 생성 후 로컬 tomcat에서 실행 시 이상 없음

    2. 로컬의 ROOT 폴더를 tar로 묶고 테스트 서버에서 tar 해제 시 log상 에러 없음

    3. 로컬의 ROOT 폴더를 cmd창에서 war로 묶고 테스트 서버에서 tomcat 실행 시 에러 없음

    인텔리제이에서 war 생성 시의 문제임으로 판단됨.

     

    2022.04.16

    1. Intellij 재설치

    - 이유 : 버전 차이로 인한 설정 상이 가능성 고려

    2. build.gradle 내 ROOT폴더 삭제 관련 task (deleteGraphicsAssets) 주석처리

    - 이유 : 삭제하고자 하는 ROOT 폴더의 위치가 달라 오류 발생 소지 有

    3. maven, gradle Clean 및 invalidate cache 삭제

    - 이유 : 기존 작업했던 이력이 남아 있을 수 있기 때문에 지난 캐시나 작업 이력 삭제

     

    4. module spring 추가

    5. applicaionContext.xml problems - 해당 구문 주석 처리

    결과 : tomcat 서버는 실행되나 로그 상 에러 및 404 에러 발생함

    <!--<value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value>
    <value>classpath:/egovframework/rte/fdl/property/messages/properties</value>-->

     

    2022.05.01

    1. javafx-src.zip 파일이 존재하지 않아 다운로드하음

    2. 인텔리제이 data source 설정이 되어있지 않음

    3.  web.xml 에러 문구 주석처리 (출처)

    4. 환경변수 확인(출처)

    5. Gradle 빌듯이 인코딩 문제 (출처)

     

    2022.05.14

    1. 테스트 서버의 server.xml에 <Context path="" docBase="/usr/local/tomcat8/webapps/ROOT" reloadable="false" />  구문 추가

     

    2. 인텔리제이 gradle -> war 실행

    3. WEB-INF > classes 폴더 안에 META-INF 폴더가 있는 것을 확인하여 해당 부분 삭제하였음

    4. IntelliJ 2021.2 공식 가이드 사이트 ( 바로가기 )

    5. IntelliJ 공식 기술 지원 사이트 ( 바로가기 )

    6. 그래 들 설정 ( 바로가기 )

     

    2022.05.15

    1. IntelliJ 공식 사이트 내 기술지원 요청 접수 

     

    2022.05.22

    1. 인텔리 설정 상호 비교 및 설정 변경

      * 변경사항 :

       1) Project Structure > Facets및 Module에 Spring 추가

       2) 인텔리제이내 Maven 설치 해제

    2. 신규 프로젝트 생성 후, WAR파일 만들고 서버에 올려보기

       -> 테스트 결과, 실패

     

    2022.06.26

    1. 테스트 서버 setenv.sh 설정 -> shutdown.sh시 에러 발생

    2. applicationContext.xml 구조 이해 및 어노테이션 정리
          ㄴ Bean 객체 생성 시 순서 복습하여 공유

    3. applicationContext.xml에 default-lazy-init="true" 적용 -> sqlSessionFactory 관련 에러 발생

     

     

    2022.07.12

    소스코드 위치를 외장하드가 아닌 C로 변경 후 로컬 PC에서 ROOT.war 파일 생성 시 정상적으로 확인됨

    결과적으로 소스코드가 외장하드에 있어 정상적으로 class파일이 compile이 되지 않아 해당 문제가 발생하였음.


    [후기] 

    이 이슈를 해결하기 위해 동기와  3개월 동안 매주 주말 스터디를 했다. 

    2개월이 되던 시점에는 지쳐서 포기하고 싶었다. 아무리 해도 성공할 기미가 보이지 않아서, 막막하고 계속 같은 자리를 도는 기분이었다. 그러다가 나중에는 오기가 생겨서 꼭 성공하고 싶었다. 누가 이기나 해보자..라는 독기 충만이 되었다.

    역시 간절한 마음이 커지면 오기가 생기는 것 같다. 그리고 드디어 3개월 만에 성공적으로 배포되었을 때 너무 신났다 ㅋㅋㅋㅋㅋㅠㅠ 서로 부둥켜안고 서로 고생했다고 칭찬해줬다. 아마 2022년 가장 기쁜 순간 BEST 3에 들지 않지 않을까 싶다. 이 과정을 통해 배운 점이 있다면 소거하여 문제 해결하는 방법이다. A, B, C 방법으로 했을 때 해결되지 않는다면, 전혀 다른 방법으로 해보고, 다른 사고로 생각해봐야 한다는 것이다. 소스 경로가 달라서 이 에러가 날 거라고 전혀 짐작도 하지 않았다. 근데 사수님은 정상적으로 성공했는데.. 우리는 왜 안될까..? 고민의 고민 끝에 소스 경로가 다르다! <는 것을 발견했고, 이 가설이 맞다는 것을 검증하기 위해 정상적으로 실행될 때와 그렇지 않을 때의 모든 경우를 테스트해봤다. 역시나 소스 경로가 달라서 발생한 문제가 맞았다. 너무 기쁘고 짜릿해서 이제까지 한 고생이 보상받는 기분이었다.

    그래.. 이 맛에 개발하지... 싶었다. 이 경험을 오래오래 기억해서 나중에 좌절할 때가 되거든 다시 꺼내봐야지 

     

    728x90

    댓글