IBM WebSphere Liberty에서 주요 데이터베이스(Oracle, DB2, MySQL, Tibero)와 연결하기 위한 JDBC 데이터소스 설정 방법을 정리합니다.
adminCenter를 활용한 관리 환경 구성, 비밀번호 암호화, 그리고restConnector를 이용한 연결 테스트까지의 전체 과정을 다룹니다.
0. 전제 조건 (Prerequisites)
- Version: Liberty 25.x 이상 권장
- Java: Java 8 (OpenJ9) 기준
- 필수 기능(Feature):
server.xml에 아래 피처들이 등록되어 있어야 합니다.
<featureManager>
<feature>jdbc-4.3</feature> <!-- JDBC 표준 지원 -->
<feature>transportSecurity-1.0</feature> <!-- 암호화 비밀번호 사용 시 -->
<feature>restConnector-2.0</feature> <!-- 연결 테스트 API용 -->
<feature>adminCenter-1.0</feature> <!-- 관리 UI 및 통합 관리 -->
</featureManager>
1. JDBC 드라이버 준비 (Driver Setup)
각 DB 벤더에 맞는 JDBC 드라이버(JAR 파일)를 준비하여 Liberty 공용 리소스 디렉토리에 배치합니다.
| DB | 파일명 (예시) | 다운로드 출처 |
|---|---|---|
| Oracle | ojdbc8.jar | Oracle MOS 또는 Maven |
| DB2 | db2jcc4.jar | DB 서버의 /sqllib/java |
| MySQL | mysql-connector-j-8.x.jar | Maven Central |
| Tibero | tibero6-jdbc.jar | TmaxSoft 테크넷 |
디렉토리 생성 및 복사
관리 편의성을 위해 ${shared.resource.dir}(기본값: usr/shared/resources) 하위에 벤더별 폴더를 만들어 관리하는 것을 추천합니다.
# Oracle 예시
mkdir -p $WLP_HOME/usr/shared/resources/jdbc/oracle
cp ojdbc8.jar $WLP_HOME/usr/shared/resources/jdbc/oracle/
2. 공통 라이브러리 정의 (Library)
server.xml에서 위에서 배치한 JAR 파일을 참조하는 library 태그를 작성합니다.
<!-- Oracle 라이브러리 정의 -->
<library id="OracleLib">
<fileset dir="${shared.resource.dir}/jdbc/oracle" includes="ojdbc*.jar"/>
</library>
3. 데이터소스 정의 (DataSource Configuration)
DB별로 설정 태그(properties)와 클래스명이 다르므로 주의해야 합니다.
Case A: Oracle Database
<dataSource id="OracleDS" jndiName="jdbc/oracleDS" statementCacheSize="60">
<jdbcDriver libraryRef="OracleLib"
javax.sql.ConnectionPoolDataSource="oracle.jdbc.pool.OracleConnectionPoolDataSource"/>
<!-- URL 방식 연결 -->
<properties.oracle URL="jdbc:oracle:thin:@//192.168.0.101:1521/ORCL"
user="scott" password="{aes}..." />
<connectionManager maxPoolSize="50" connectionTimeout="6s"
reapTime="300" maxIdleTime="1800"/>
</dataSource>
Case B: IBM DB2
<dataSource id="DB2DS" jndiName="jdbc/db2" isolationLevel="TRANSACTION_READ_COMMITTED">
<jdbcDriver libraryRef="DB2Lib"
javax.sql.ConnectionPoolDataSource="com.ibm.db2.jcc.DB2ConnectionPoolDataSource"/>
<properties.db2.jcc databaseName="SAMPLE" serverName="localhost" portNumber="50000"
user="db2inst1" password="{aes}..." />
</dataSource>
Case C: Tibero (Tmax)
국산 DB인 Tibero는 properties 태그가 별도로 없으므로 일반적인 속성 주입 방식을 사용하거나, Tibero 전용 프로퍼티를 명시해야 할 수 있습니다.
<dataSource id="TiberoDS" jndiName="jdbc/tibero" statementCacheSize="100">
<jdbcDriver libraryRef="TiberoLib"
javax.sql.ConnectionPoolDataSource="com.tmax.tibero.jdbc.ext.TbConnectionPoolDataSource"/>
<!-- properties.tibero 태그 사용 -->
<properties.tibero url="jdbc:tibero:thin:@192.168.0.111:8629:tibero"
user="admin" password="{aes}..." />
</dataSource>
4. 비밀번호 암호화 (Security)
설정 파일에 비밀번호를 평문으로 저장하는 것은 보안상 위험합니다. securityUtility를 이용해 AES로 암호화합니다.
암호화 실행
# 암호화 키 지정 (예: passw0rd)
$WLP_HOME/bin/securityUtility encode --encoding=aes --key=passw0rd 'DB_REAL_PASSWORD'
# 결과: {aes}AA6wcy4K2Xm...
키 등록 (bootstrap.properties)
서버가 암호를 복호화할 수 있도록 키를 등록해줍니다.
wlp.password.encryption.key=passw0rd
5. 연결 테스트 및 검증 (Validation)
서버를 기동한 후, REST API를 통해 데이터소스 연결 상태를 체크할 수 있습니다.
해당 API를 호출하거나 웹 관리 콘솔(Admin Center)을 이용하기 위해서는
adminCenter-1.0 및 restConnector-2.0 피처가 반드시 활성화되어 있어야 하며, 접근하는 계정에 관리자(Administrator) 권한이 있어야 합니다.
연결 테스트 명령어 (curl)
# 관리자 계정(admin)으로 인증 후 테스트 API 호출
curl -k -u admin:passw0rd \
https://localhost:9443/ibm/api/validation/dataSource/OracleDS
성공 시: 200 OK와 함께 JSON 응답 내에 "Valid" 메시지가 포함됩니다.
실패 시: messages.log 파일에서 CWLLG2010E(로드 실패), CWNEN0034E(연결 실패) 등의 에러 코드를 확인합니다.
6. 트러블슈팅 체크리스트
- ClassNotFoundException:
library경로 오타 또는 JAR 파일 권한(755) 확인 - Connection Timeout: DB 방화벽(Port) 오픈 여부 확인
- Authentication Failed:
bootstrap.properties에 암호화 키가 올바르게 등록되었는지 확인