본문 바로가기

WAS/WebLogic

[weblogic] Classpath 추가 - 기동 스크립트 수정 방법

weblogic 서버 기동에 필요한 클래스가 load 된 후에

추가로 클래스를 load 하고자 하는 경우에 사용하는 방법

 


 

서버 기동 스크립트에서

CLASSPATH 변수를 선언 후, 추가하고자 하는 클래스 경로를 작성하면 된다.

각각의 클래스는 콜론( : ) 으로 구분한다.

 

최종적으로 setDomainEnv.sh 에서 export CLASSPATH 를 실행하지만,

만일을 위해 기동 스크립트에도 export CLASSPATH 를 작성한다.

 

#classpath
CLASSPATH="${CLASSPATH}:추가할클래스01:추가할클래스02:추가할클래스03"

#export
export CLASSPATH

 

 


 

기존에 사용 중인 ojdbc.jar 대신 

다른 버전의 ojdbc.jar 를 load 해야 하는 경우

CLASSPATH 대신 EXT_PRE_CLASSPATH 를 사용해야 한다.

EXT_PRE_CLASSPATH 는 default 로 설치된 웹로직 모듈보다 먼저 load 되도록 한다

ojdbc8.jar 대신 ojdbc6.jar 를 사용해야 할 경우

1. {DOMAIN_HOME}/lib 에 ojdbc6.jar 추가

2. 서버 기동 스크립트에 아래 내용 추가
EXT_PRE_CLASSPATH="${EXT_PRE_CLASSPATH}:/.../ojdbc6-11.2.0.4.jar"
export EXT_PRE_CLASSPATH

 

해당 ojdbc6.jar 파일이 가장 먼저 load 된 것을 확인할 수 있음

 

JDBC 11.2.0.4 버전을 사용하여 Oracle DB 12.2.0.1 과 연동하였음

 

EXT_PRE_CLASSPATH 참고 글

https://m.blog.naver.com/dae0park/221554883448

 


 

주의해야 할 점으로

{DOMAIN_HOME}/lib 디렉토리에 jar 파일을 위치시키면

weblogic 에서 자동으로 해당 디렉토리 내의 클래스 파일들을 읽어들인다.

기존 CLASSPATH의 마지막에 불러들인다.

 

아래 상황은

{DOMAIN_HOME}/lib 디렉토리에 ojdbc6.jar 파일을 위치시키고

서버 기동 스크립트에 EXT_PRE_CLASSPATH 옵션이 없을 경우의 로그.

<Oct 12, 2021 11:10:12 AM KST> <Notice> <WebLogicServer> <BEA-000395> 
<The following extensions directory contents added to the end of the classpath: 
/app/weblogic/weblogic_1411/domains/ehc_domain/lib/ojdbc6-11.2.0.4.jar.>

 

CLASSPATH의 마지막에 해당 ojdbc.jar 파일을 추가했다는 로그가 기록되지만,

해당 ojdbc6.jar 클래스 파일보다 먼저 load 된 ojdbc.jar 파일의 우선순위가 높으므로

아래와 같이 ojdbc6.jar 가 적용되지 않는다.

<Info> <JDBC> <BEA-001516> 
<Data source connection pool "test" connected to Database: "Oracle", Version: 
"Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production".> 

===========================================

<Info> <JDBC> <BEA-001517> 
<Data source connection pool "test" using Driver: 
"Oracle JDBC driver", Version: "19.3.0.0.0".>