Tomcat 소스 반영 시 순환참조 문제 발생했다.
User
Caused by: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]을(를) 시작하지 못했습니다.
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
... 6 more
Caused by: java.lang.IllegalStateException: StackOverflowError로 인하여, 웹 애플리케이션에서 annotation 스캔을 완료하지 못했습니다. 가능성 있는 근본 원인(root cause)들 중의 하나는 -Xss가 너무 적게 설정되어 있거나 불허된 순환 상속 의존관계들일 수 있습니다. 처리되는 클래스의 상속 계층구조는 [org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector->org.bouncycastle.asn1.ASN1EncodableVector]입니다.
at
bcprov 라이브러리의 순환참조 문제 발생으로 추정
org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector
Library 종속 관계 파악하기 위하여 Tree Format으로 결과를 보여준다
mvn dependency:tree
또는 이클립스 의 경우 dependency 탭에서 확인가능
동일한 라이브러리가 두개가 있었다.
관련 라이브러리가 웹 어플리케이션에서 사용하지 않는다면 제거
사용 중인 프로젝트에서는 해당 라이브러리 사용 중임으로 불가
ThreadStackSize를 조정하여 처리
ThreadStackSize의 Default 값은 Linux 64bit 기준 1M으로 동일하게 설정되어 있음
ThreadStackSize를 너무 크게 잡아 Thread가 많이 늘어난다면 OutOfMemory가 발생할 수 있으며, 너무 작게 잡은 상태라면 StackOverFlow 발생
Default값으로 설정되어 있고 적절한 값을 찾아서 적용하기에는 시간 부족으로 인하여 진행하지 않음..(건들기가 무서운것도 있었음..)
JVM 옵션 확인 명령어
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'ThreadstackSize'
실제 진행한 방법
의존성 문제라면 maven build 시 문제 발생하겠지만 build는 정상적으로 수행됨
WAS 구동 시 발생된 문제로 판단하여 Tomcat에서 해당 라이브러리 Skip 처리함
수행 내용
1) Tomcat의 catalina.properties 열기
vi /home/macrogen/tomcat/conf/catalina.properties
2) jarsToSkip 찾은 후 해당 라이브러리 추가
출처: https://lovethefeel.tistory.com/54 [사는 이야기:티스토리]
므찝니당