본문 바로가기

WAS/WebLogic

애플리케이션 배포 시, 라이브러리 충돌이 나는 경우 대처

728x90

1. WebLogic 인스턴스 기동 sh 파일에 CLASSPATH 제일 상위로 설정

export EXT_PRE_CLASSPATH="/myapp/.../WEB-INF/lib/log4j.jar"

 

 

<Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application "test".
weblogic.application.ModuleException: java.lang.ClassNotFoundException: Cannot find class: com.aaa.bbb.ccc.mymy.myCode

이런 류의 에러인 경우에는 아래와 같이 진행해도 된다.


2. Web Application 라이브러리(.../WEB-INF/lib)를 우선시 하는 설정 - weblogic.xml 에 설정

<weblogic-web-app>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
</weblogic-web-app>



3. Web Application 라이브러리를 우선시 하는 설정 (패키지별 등록) - weblogic.xml 에 설정

<weblogic-web-app>
  <container-descriptor>
      <prefer-web-inf-classes>false</prefer-web-inf-classes>
      <prefer-application-package>
        <package-name>com.aaa.*</package-name>
        <package-name>javax.persistence.*</package-name>
        <package-name>org.apache.commons.*</package-name>
      </prefer-application-package>
  </container-descriptor>
</weblogic-web-app>

 



2,3 번은 동시에 하면 안 된다.

3번안을 사용하는 경우, prefer-web-inf-classes 옵션은 반드시 false로 해야 한다.