이전 목차 색인 다음 |
Sun Java System Message Queue 3.5 SP1 관리 설명서

> ## 부록 B
> 플러그 인 지속성 설정

> 이 부록에서는 플러그 인 지속성을 사용해서 JDBC로 액세스할 수 있는 데이터 저장소에 액세스하도록 브로커를 설정하는 방법을 설명합니다.

> ##

> 소개

> Message Queue 브로커에는 지속성 정보의 기록과 복원을 관리하는 지속성 관리자 구성 요소가 있습니다("지속성 관리자" 참조). 지속성 관리자는 기본적으로 기본 제공되는 파일 기반 데이터 저장소에 액세스하도록 구성되어 있지만 JDBC 호환 드라이버를 통해 액세스할 수 있는 데이터 저장소를 플러그 인으로 사용하도록 재구성할 수도 있습니다.

> 플러그 인 지속성을 사용하도록 브로커를 구성하려면 브로커 인스턴스 구성 파일에 JDBC 관련 등록 정보를 설정해야 합니다. Message Queue 지속성 작업을 수행할 수 있는 적절한 데이터베이스 스키마도 만들어야 합니다. Message Queue에는 JDBC 드라이버와 브로커 구성 등록 정보를 사용해서 플러그 인 데이터베이스를 만들고 관리하는 데이터베이스 관리자 유틸리티(imqdbmgr)가 제공됩니다.

> 이 부록의 절차에서는 Java 2 Platform 엔터프라이즈판(J2EE) SDK와 함께 제공되는 PointBase DBMS를 예로 사용하여 설명합니다. 버전 1.4는 java.sun.com에서 다운로드할 수 있습니다. 예에서는 클라이언트/서버 버전 대신 PointBase 내장 버전을 사용합니다. 절차에서는 PointBase 예의 경로 이름과 등록 정보 이름을 사용하여 지침을 소개합니다. 이러한 지침은 "Example"로 표시됩니다.

> Oracle 및 PointBase의 구성 예는 부록 A, "Message Queue 데이터의 위치"에 표시된 예 위치에서 찾을 수 있습니다. 또한 PointBase 내장 버전, PointBase 서버 버전, Oracle 및 Cloudscape의 예는 인스턴스 구성 파일에서 주석 처리된 값으로 제공됩니다.

> ##

> JDBC로 액세스할 수 있는 데이터 저장소 플러그 인

> JDBC로 액세스할 수 있는 데이터 저장소를 플러그 인하는 작업은 단 몇 단계로 이루어집니다.

> ##### JDBC로 액세스할 수 있는 데이터 저장소를 플러그 인하는 방법

> 1. 브로커의 구성 파일에서 JDBC 관련 등록 정보를 설정합니다.

> 표 B-1에 설명된 등록 정보를 참조하십시오.

> 2. 다음 경로에 위치한 JDBC 드라이버 jar 파일의 사본 또는 심볼릭 링크를 넣습니다.

> /usr/share/lib/imq/imq/ext/ (Solaris)

> /opt/imq/lib/ext/ (Linux)

> IMQ_VARHOME\lib\ext (Windows)

> 복사 예(Solaris):

> % cp j2eeSDK_install_directory/pointbase/lib/pointbase.jar /usr/share/lib/imq/ext

> 심볼릭 링크 예(Solaris):

> % ln -s j2eeSDK_install_directory/lib/pointbase/pointbase.jar /usr/share/lib/imq/ext

> 3. Message Queue 지속성에 필요한 데이터베이스 스키마를 만듭니다.

> imqdbmgr create all 명령(내장 데이터베이스의 경우) 또는 imqdbmgr create tbl 명령(외부 데이터베이스의 경우)을 사용합니다. "데이터베이스 관리자 유틸리티(imqdbmgr)"를 참조하십시오.

> 예:

> 1. imqdbmgr가 위치한 디렉토리로 변경합니다.

> cd /usr/bin (Solaris)

> cd /opt/imq/bin (Linux)

> cd IMQ_HOME/bin (Windows)

> 2. imqdbmgr 명령을 입력합니다.

> imqdbmgr create all

> 주 | 내장 데이터베이스를 사용하는 경우에는 데이터베이스를 다음 디렉토리에 만드는 것이 좋습니다. .../instances/instanceName/dbstore/dabatabseName 내장 데이터베이스가 사용자 아이디와 비밀번호로 보호되지 않는 경우에는 파일 시스템 권한으로 보호합니다. 브로커에서 데이터베이스를 읽고 쓸 수 있게 하려면 브로커를 실행하는 사용자가 imqdbmgr 명령을 사용해서 내장 데이터베이스를 만든 사용자와 같아야 합니다("데이터베이스 관리자 유틸리티(imqdbmgr)" 참조).

> ##

> JDBC 관련 브로커 구성 등록 정보

> 브로커의 인스턴스 구성 파일은 구성 파일과 연관된 브로커 인스턴스 이름(instanceName)으로 식별되는 디렉토리에 있습니다(부록 A, "Message Queue 데이터의 위치" 참조).

> .../instances/instanceName/props/config.properties

> 파일이 아직 없는 경우에는 Message Queue에서 파일을 만들 수 있도록 -name instanceName 옵션을 사용해서 브로커를 시작해야 합니다.

> 표 B-1에는 JDBC로 액세스할 수 있는 데이터 저장소를 플러그 인할 때 설정해야 하는 구성 등록 정보가 있습니다. 플러그 인 지속성을 사용하는 각 브로커 인스턴스의 구성 파일(config.properties)에서 이 등록 정보를 설정합니다.

> 인스턴스 구성 등록 정보를 사용하면 Message Queue 데이터베이스 스키마를 만드는 SQL 코드를 사용자 정의할 수 있습니다. 각 데이터베이스 테이블을 만드는 SQL 코드를 지정하는 구성 가능한 등록 정보가 있습니다. 이 등록 정보에서 플러그 인된 데이터베이스가 사용하는 데이터 유형을 올바르게 지정해야 합니다.

> 데이터베이스 공급업체 간에 정확한 SQL 구문에 대해 호환되지 않는 점이 있으므로 데이터베이스 공급업체의 해당 설명서를 확인하여 표 B-1의 등록 정보를 적절하게 조정해야 합니다. 예를 들어, PointBase 데이터베이스의 경우 IMQMSG35 테이블에서 MSG 열(imq.persist.jdbc.table.IMQMSG35 등록 정보 참조)의 최대 허용 길이를 조정해야 하는 경우가 있습니다.

> 표 B-1에서는 PointBase DBMS 예에서 지정하게 될 값을 소개합니다.

> 표 B-1 JDBC 관련 등록 정보

> 등록 정보 이름 | 설명
> --- | ---
> imq.persist.store | 파일 기반 또는 JDBC 기반 데이터 저장소를 지정합니다. 예: jdbc
> imq.persist.jdbc.brokerid (선택 사항) | 같은 데이터베이스를 영구 데이터 저장소로 사용하고 있는 브로커 인스턴스가 두 개 이상인 경우 데이터베이스 테이블 이름에 추가하여 고유한 이름으로 만들어 주는 브로커 인스턴스 식별자를 지정합니다. (보통 한 브로커 인스턴스에 대해서만 데이터를 저장하는 내장 데이터베이스에는 필요 없습니다.) 식별자는 데이터베이스에 허용되는 최대 테이블 이름 길이에서 12를 뺀 길이를 넘지 않는 영문자 및 숫자 문자열이어야 합니다. 예: PointBase 내장 버전에는 필요 없음
> imq.persist.jdbc.driver | 데이터베이스에 연결할 JDBC 드라이버의 Java 클래스 이름을 지정합니다. 예: com.pointbase.jdbc.jdbcUniversalDriver
> imq.persist.jdbc.opendburl | 기존 데이터베이스에 대한 연결을 여는 데이터베이스 URL을 지정합니다. 예: jdbc:pointbase:embedded:dbName; database.home= .../instances/instanceName/dbstore
> imq.persist.jdbc.createdburl (선택 사항) | 데이터베이스를 만들기 위해 연결을 여는 데이터베이스 URL을 지정합니다. (imqdbmgr을 사용해서 데이터베이스를 만드는 경우에만 지정합니다.) 예: jdbc:pointbase:embedded:dbName;new, database.home= .../instances/instanceName/dbstore
> imq.persist.jdbc.closedburl (선택 사항) | 브로커를 종료할 때 현재 데이터베이스 연결을 종료하는 데이터베이스 URL을 지정합니다. 예: PointBase에는 필요 없음
> imq.persist.jdbc.user (선택 사항) | 필요한 경우 데이터베이스 연결을 열 때 사용되는 사용자 아이디를 지정합니다. 보안상의 이유로 명령줄 옵션을 사용해서 값을 지정할 수도 있습니다. imqbrokerd -dbuser 및 imqdbmgr -u
> imq.persist.jdbc.needpassword (선택 사항) | 브로커에 액세스할 때 데이터베이스에 비밀번호가 필요한지 여부를 지정합니다. true 값은 비밀번호가 필요하다는 것을 의미합니다. 비밀번호는 다음과 같은 명령줄 옵션을 사용해서 지정할 수 있습니다. imqbrokerd -dbpassword imqdbmgr -p 명령줄 옵션과 passfile ("Passfile 사용" 참조) 중 어느 것으로도 비밀번호를 제공하지 않은 경우 브로커는 비밀번호를 묻는 프롬프트를 표시합니다.
> imq.persist.jdbc.password (선택 사항) | 필요한 경우 데이터베이스 연결을 열 때 사용되는 비밀번호를 지정합니다. 이 등록 정보는 passfile에서만 지정할 수 있습니다("Passfile 사용" 참조). 여러 방법으로 비밀번호를 제공할 수 있습니다. 가장 안전한 방법은 브로커가 비밀번호를 묻는 프롬프트를 표시하게 하는 것입니다. passfile을 사용하고 passfile을 읽기 방지하는 방법은 덜 안전합니다. 다음 명령줄 옵션을 사용하여 비밀번호를 지정하는 방법이 가장 안전하지 않습니다. imqbrokerd -dbpassword imqdbmgr -p
> imq.persist.jdbc.table.IMQSV35 | 버전 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (STOREVERSION INTEGER NOT NULL, BROKERID VARCHAR(100))
> imq.persist.jdbc.table.IMQCCREC35 | 구성 변경 레코드 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (RECORDTIME BIGINT NOT NULL, RECORD BLOB(10k))
> imq.persist.jdbc.table.IMQDEST35 | 대상 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (DID VARCHAR(100) NOT NULL, DEST BLOB(10k), primary key(DID))
> imq.persist.jdbc.table.IMQINT3 | 인터레스트 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (CUID BIGINT NOT NULL, INTEREST BLOB(10k), primary key(CUID))
> imq.persist.jdbc.table.IMQMSG35 | 메시지 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (MID VARCHAR(100) NOT NULL, DID VARCHAR(100), MSGSIZE BIGINT, MSG BLOB(1m), primary key(MID)) MSG 열의 기본 최대 길이는 1MB (1m)입니다. 이보다 큰 메시지가 있을 것으로 예상되면 이 길이를 알맞게 설정합니다. 이미 만든 테이블이 있는 경우 변경 사항을 적용하려면 테이블을 다시 만들어야 합니다.
> imq.persist.jdbc.table.IMQPROPS35 | 등록 정보 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (PROPNAME VARCHAR(100) NOT NULL, PROPVALUE BLOB(10k), primary key(PROPNAME))
> imq.persist.jdbc.table.IMQILIST35 | 인터레스트 상태 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (MID VARCHAR(100) NOT NULL, CUID BIGINT, DID VARCHAR(100), STATE INTEGER, primary key(MID, CUID))
> imq.persist.jdbc.table.IMQTXN35 | 트랜잭션 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (TUID BIGINT NOT NULL, STATE INTEGER, TSTATEOBJ BLOB(10K), primary key(TUID))
> imq.persist.jdbc.table.IMQTACK35 | 트랜잭션 확인 테이블을 만들 때 사용하는 SQL 명령 예: CREATE TABLE ${name} (TUID BIGINT NOT NULL, TXNACK BLOB(10k))

> 브로커 구성 등록 정보와 마찬가지로, -D 명령줄 옵션을 사용해서 값을 설정할 수 있습니다. 데이터베이스에 데이터베이스 특정 등록 정보를 설정해야 하는 경우에도 브로커(imqbrokerd) 또는 데이터베이스 관리자 유틸리티(imqdbmgr)를 시작할 때 -D 명령줄 옵션을 사용하여 설정할 수 있습니다.

> 예:

> PointBase 내장 데이터베이스의 예에서는 데이터베이스 연결 URL에 데이터베이스 절대 경로를 지정하는 대신(표 B-1 예 참조), -D 명령줄 옵션을 사용하여 PointBase 시스템 디렉토리를 정의할 수 있습니다.

> -Ddatabase.home=IMQ_VARHOME/instances/instanceName/dbstore

> 이 경우 데이터베이스를 만들고 여는 URL을 다음과 같이 간단하게 지정할 수 있습니다.

> imq.persist.jdbc.createdburl=jdbc:pointbase:embedded:dbName;new

> 그리고

> imq.persist.jdbc.opendburl=jdbc:pointbase:embedded:dbName

> 이 각각 적용됩니다.

> ##

> 데이터베이스 관리자 유틸리티(imqdbmgr)

> Message Queue에는 지속성에 필요한 스키마를 설정하는 데이터베이스 관리자 유틸리티(imqdbmgr)가 포함되어 있습니다. 이 유틸리티는 테이블이 손상되거나 데이터 저장소로 다른 데이터베이스를 사용하는 경우에 Message Queue 데이터베이스 테이블을 삭제하는 용도로도 사용할 수 있습니다.

> 이 절에서는 기본 imqdbmgr 명령 구문을 설명하고, 하위 명령 목록을 제공하고, imqdbmgr 명령 옵션을 요약합니다.

> ### imqdbmgr 명령의 구문

> imqdbmgr 명령의 일반 구문은 다음과 같습니다.

> imqdbmgr subcommand argument [options]
> imqdbmgr -h|-help
> imqdbmgr -v|-version

> -v, 또는 -h 옵션을 지정하는 경우 명령줄에 지정된 하위 명령이 실행되지 않습니다. 예를 들어, 다음 명령을 입력하면 버전 정보는 표시되지만 create 하위 명령은 실행되지 않습니다.

> imqdbmgr create all -v

> ### imqdbmgr 하위 명령

> 데이터베이스 관리자 유틸리티(imqdbmgr)에는 표 B-2에 나열된 하위 명령이 포함되어 있습니다.

> 표 B-2 imqdbmgr 하위 명령

> 하위 명령 및 인수 | 설명
> --- | ---
> create all | 새 데이터베이스와 Message Queue 영구 저장소 스키마를 만듭니다. 이 명령은 내장 데이터베이스 시스템에 사용되며, 사용하는 경우에는 imq.persist.jdbc.createdburl 등록 정보를 지정해야 합니다.
> create tbl | 기존 데이터베이스 시스템에 Message Queue 영구 저장소 스키마를 만듭니다. 이 명령은 외부 데이터베이스 시스템에 사용됩니다.
> delete tbl | 현재 영구 저장소 데이터베이스에서 기존 Message Queue 데이터베이스 테이블을 삭제합니다.
> delete oldtbl | 이전 버전의 영구 저장소 데이터베이스에서 Message Queue 데이터베이스 테이블을 모두 삭제합니다. 영구 저장소가 자동으로 현재 버전의 Message Queue로 이전된 이후에 사용합니다.
> recreate tbl | 현재 영구 저장소 데이터베이스에서 기존 Message Queue 데이터베이스 테이블을 삭제한 후 Message Queue 영구 저장소 스키마를 다시 만듭니다.
> reset lck | 영구 저장소 데이터베이스를 다른 프로세스에서 사용할 수 있도록 잠금을 재설정합니다.

> ### imqdbmgr 명령 옵션 요약

> 표 B-3에는 imqdbmgr 명령의 옵션이 나열되어 있습니다.

> 표 B-3 imqdbmgr 옵션

> 옵션 | 설명
> --- | ---
> -Dproperty=value | 지정한 등록 정보를 지정한 값으로 설정합니다.
> -b instanceName | 브로커 인스턴스 이름을 지정하고 해당 인스턴스 구성 파일을 사용합니다.
> -h | 사용 도움말을 표시합니다. 명령줄에 있는 명령은 실행되지 않습니다.
> -p password | 데이터베이스 비밀번호를 지정합니다.
> -u name | 데이터베이스 사용자 아이디를 지정합니다.
> -v | 버전 정보를 표시합니다. 명령줄에 있는 명령은 실행되지 않습니다.

> 이전 목차 색인 다음

> Copyright 2004 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.