환경은 AIX고 weblogic 10.3.6에서 12.2.1.4로 업그레이드 하는 과정에서 생겨난 이슈이다.
application 소스 파일은 동일한 것을 바라보며, JDK 또한 변하지 않은 상황에서 생겨난 이슈.
<Error> <Deployer> <BEA-149205> <Failed to initialize the application "~~" due to error weblogic.management.DeploymentException: java.lang.ClassNotFoundException: com.ibatis.sqlmap.client.SqlMapClient
소스 파일이 변동되지 않았음에도 class not found exception이 발견이 되었다.
이에 대해 weblogic에서 class를 로딩할때 발견되는 문제를 debugging하기 위해 JVM 디버깅 기능을 활용하여 추적했다.
java -verbose:class [Class Name] |
뒤에 [Class Name]이 없다면 클래스를 전부 debugging 하게 된다.
verbose 옵션은 또한 class, gc, dynaload 등이 있으며 옵션을 동시에 사용하게 될 때에는
-verbose:class,gc 와 같이 ','로 구분짓게 된다.
위 verbose 옵션을 통해 사용해본 결과 해당 com.ibatis.sqlmap.client.SqlMapClient 은 application에서 참조하지 않는 클래스이다.
weblogic 12c로 업그레이드 이후 위와 같은 사용하지 않는 클래스에 대해서 classnotfound가 나타나는 현상은 12c와 11g에서의 annotation processor 의 변화가 있기 때문으로 추측된다.
# Annotation Processor란? 컴파일 단계에서 Annotation에 정의된 일렬의 프로세스를 동작하게 하는 것을 의미합니다. 컴파일 단계에서 실행되기 때문에, 빌드 단계에서 에러를 출력하게 할 수 있고, 소스코드 및 바이트 코드를 생성할 수도 있습니다. (참조 : https://roadj.tistory.com/9) |
해당 사항에 대한 Oracle 안내사항은 다음과 같다.
따라서 위 문제를 해결하기 위해 취한 조치는 다음과 같다.
1. JVM Option 추가 -Dweblogic.servlet.DIDisabled=true 값 기동 스크립트에 추가 2. web.xml의 servlet header 값에 Meta data 값 추가 <?xml version="1.0" encoding="UTF-8"?> <web-app id="servlet-2_5" version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" metadata-complete="true"> </web-app> |
참고로 metadata-complete 옵션을 처음에는 태그로 주었는데 다음과 같은 에러가 나타났었다.
The error is weblogic.descriptor.DescriptorException: VALIDATION PROBLEMS WERE FOUND |
해당 사항에 대하여 servlet 버전이 낮아서 생겨난 현상으로만 접근을 하다가 위에서 작성한 것처럼 metadata가 header값 안에 같이 들어가야 한다는 점을 발견했다. (web.xml의 schema header 값의 순서는 영향이 없는 것으로 보여짐)
'Oracle > TroubleShooting' 카테고리의 다른 글
Too may open files (0) | 2023.02.28 |
---|---|
WebLogic SSL 에러 - PKIX Path Building Failed (0) | 2022.12.14 |
WebLogic JDK 7에서 8로 업그레이드 후 TLS 관련 (0) | 2022.12.14 |
Waiting on Condition (0) | 2022.11.21 |
WebLogic console 404 error (0) | 2022.11.14 |