14.2. JDBC 잠금 시스템 사용
14.2.1. 개요
JDBC 잠금 메커니즘은 Red Hat Fuse 인스턴스가 별도의 시스템에 존재하는 페일오버 배포용입니다.
이 시나리오에서는 기본 인스턴스에는 데이터베이스에 호스팅되는 잠금 테이블에 대한 잠금이 있습니다. 기본 인스턴스가 잠금을 끊으면 대기 중인 보조 프로세스에서 잠금에 대한 액세스 권한을 얻고 해당 컨테이너를 완전히 시작합니다.
14.2.2. classpath에 JDBC 드라이버 추가
JDBC 잠금 시스템에서는 primary/secondary 설정의 각 인스턴스의 classpath에 JDBC 드라이버가 있어야 합니다. 다음과 같이 JDBC 드라이버를 classpath에 추가합니다.
-
JDBC 드라이버 JAR 파일을 각 Red Hat Fuse 인스턴스의
ESBInstallDir/lib/ext
디렉터리에 복사합니다. CLASSPATH
변수에 JDBC 드라이버 JAR을 포함하도록bin/karaf
시작 스크립트를 수정합니다.예를 들어 JDBC JAR 파일
JDBCJarFile.jar
가 제공되는 경우 다음과 같이 시작 스크립트를 수정할 수 있습니다 (*NIX 운영 체제).... # Add the jars in the lib dir for file in "$KARAF_HOME"/lib/karaf*.jar do if [ -z "$CLASSPATH" ]; then CLASSPATH="$file" else CLASSPATH="$CLASSPATH:$file" fi done CLASSPATH="$CLASSPATH:$KARAF_HOME/lib/JDBCJarFile.jar"
참고MySQL 드라이버 JAR 또는 PostgreSQL 드라이버 JAR을 추가하는 경우
karaf-
접두사를 추가하여 드라이버 JAR의 이름을 변경해야합니다. 그렇지 않으면 Apache Karaf가 중단되고 로그에 Apache Karaf가 드라이버를 찾을 수 없음을 알려줍니다.
14.2.3. JDBC 잠금 시스템 구성
JDBC 잠금 시스템을 구성하려면 다음과 같이 기본/초 배포 시 각 인스턴스에 대해 etc/system.properties
파일을 업데이트하십시오.
예 14.2. JDBC 잠금 파일 구성
karaf.lock=true karaf.lock.class=org.apache.karaf.main.lock.DefaultJDBCLock karaf.lock.level=50 karaf.lock.delay=10000 karaf.lock.jdbc.url=jdbc:derby://dbserver:1527/sample karaf.lock.jdbc.driver=org.apache.derby.jdbc.ClientDriver karaf.lock.jdbc.user=user karaf.lock.jdbc.password=password karaf.lock.jdbc.table=KARAF_LOCK karaf.lock.jdbc.clustername=karaf karaf.lock.jdbc.timeout=30
이 예제에서는 sample이라는 데이터베이스가 아직 없는 경우 생성됩니다. 잠금 테이블을 얻는 첫 번째 Red Hat Fuse 인스턴스는 기본 인스턴스입니다. 데이터베이스에 대한 연결이 손실되면 기본 인스턴스가 정상적으로 종료되어 데이터베이스 서비스가 복원될 때 보조 인스턴스가 기본 인스턴스가 될 수 있습니다. 이전 기본 인스턴스에는 수동 재시작이 필요합니다.
14.2.4. Oracle에서 JDBC 잠금 구성
JDBC 잠금 시나리오에서 Oracle을 데이터베이스로 사용하는 경우 etc/system.properties
파일의 karaf.lock.class
속성은 org.apache.karaf.main.lock.OracleJDBCLock
을 가리켜야 합니다.
또는 다음과 같이 system.properties
파일을 설정에 대해 정상적으로 구성합니다.
예 14.3. Oracle JDBC 잠금 파일 구성
karaf.lock=true karaf.lock.class=org.apache.karaf.main.lock.OracleJDBCLock karaf.lock.jdbc.url=jdbc:oracle:thin:@hostname:1521:XE karaf.lock.jdbc.driver=oracle.jdbc.OracleDriver karaf.lock.jdbc.user=user karaf.lock.jdbc.password=password karaf.lock.jdbc.table=KARAF_LOCK karaf.lock.jdbc.clustername=karaf karaf.lock.jdbc.timeout=30
karaf.lock.jdbc.url
에는 활성 Oracle 시스템 ID(SID)가 필요합니다. 즉, 이 특정 잠금을 사용하기 전에 데이터베이스 인스턴스를 수동으로 생성해야 합니다.
14.2.5. Derby에서 JDBC 잠금 구성
JDBC 잠금 시나리오에서 Derby를 데이터베이스로 사용하는 경우 etc/system.properties
파일의 karaf.lock.class
속성은 org.apache.karaf.main.lock.DerbyJDBCLock
를 가리켜야 합니다. 예를 들어 다음과 같이 system.properties
파일을 구성할 수 있습니다.
예 14.4. Derby의 JDBC 잠금 파일 구성
karaf.lock=true karaf.lock.class=org.apache.karaf.main.lock.DerbyJDBCLock karaf.lock.jdbc.url=jdbc:derby://127.0.0.1:1527/dbname karaf.lock.jdbc.driver=org.apache.derby.jdbc.ClientDriver karaf.lock.jdbc.user=user karaf.lock.jdbc.password=password karaf.lock.jdbc.table=KARAF_LOCK karaf.lock.jdbc.clustername=karaf karaf.lock.jdbc.timeout=30
14.2.6. MySQL에서 JDBC 잠금 구성
JDBC 잠금 시나리오에서 MySQL을 데이터베이스로 사용하는 경우 etc/system.properties
파일의 karaf.lock.class
속성은 org.apache.karaf.main.lock.MySQLJDBCLock
을 가리켜야 합니다. 예를 들어 다음과 같이 system.properties
파일을 구성할 수 있습니다.
예 14.5. MySQL의 JDBC 잠금 파일 구성
karaf.lock=true karaf.lock.class=org.apache.karaf.main.lock.MySQLJDBCLock karaf.lock.jdbc.url=jdbc:mysql://127.0.0.1:3306/dbname karaf.lock.jdbc.driver=com.mysql.jdbc.Driver karaf.lock.jdbc.user=user karaf.lock.jdbc.password=password karaf.lock.jdbc.table=KARAF_LOCK karaf.lock.jdbc.clustername=karaf karaf.lock.jdbc.timeout=30
14.2.7. PostgreSQL에서 JDBC 잠금 구성
JDBC 잠금 시나리오에서 PostgreSQL을 데이터베이스로 사용하는 경우 etc/system.properties
파일의 karaf.lock.class
속성은 org.apache.karaf.main.lock.PostgreSQLJDBCLock
을 가리켜야 합니다. 예를 들어 다음과 같이 system.properties
파일을 구성할 수 있습니다.
예 14.6. PostgreSQL에 대한 JDBC 잠금 파일 구성
karaf.lock=true karaf.lock.class=org.apache.karaf.main.lock.PostgreSQLJDBCLock karaf.lock.jdbc.url=jdbc:postgresql://127.0.0.1:5432/dbname karaf.lock.jdbc.driver=org.postgresql.Driver karaf.lock.jdbc.user=user karaf.lock.jdbc.password=password karaf.lock.jdbc.table=KARAF_LOCK karaf.lock.jdbc.clustername=karaf karaf.lock.jdbc.timeout=0
14.2.8. JDBC 잠금 클래스
다음 JDBC 잠금 클래스는 현재 Apache Karaf에서 제공합니다.
org.apache.karaf.main.lock.DefaultJDBCLock org.apache.karaf.main.lock.DerbyJDBCLock org.apache.karaf.main.lock.MySQLJDBCLock org.apache.karaf.main.lock.OracleJDBCLock org.apache.karaf.main.lock.PostgreSQLJDBCLock