1. 데이터소스 관련 명령어

데이터소스 관리 및 설정 변경, 설정 확인 등의 기능을 제공한다. 명령어들의 목록은 다음과 같다.

명령어 설명

add-cluster-data-source

클러스터 데이터소스를 도메인에 동적으로 추가한다.

add-data-source

데이터소스를 도메인에 동적으로 추가한다.

list-cluster-data-sources

도메인에 존재하는 모든 클러스터 데이터소스의 목록을 조회한다. 특정 데이터소스의 ID를 명시할 경우 해당 클러스터 데이터소스의 설정을 자세히 조회한다.

list-data-sources

도메인에 존재하는 모든 데이터소스의 목록을 조회한다. 특정 데이터소스의 ID를 명시할 경우 해당 데이터소스의 설정을 자세히 조회한다.

modify-cluster-data-source

클러스터 데이터소스의 설정을 변경한다. 대부분의 설정이 동적으로 변경 가능하다.

modify-data-source

데이터소스의 설정을 변경한다. 일부 설정은 동적으로 변경 가능하다.

remove-cluster-data-source

클러스터 데이터소스를 도메인으로부터 동적으로 삭제한다.

remove-data-source

데이터소스를 도메인으로부터 동적으로 삭제한다.

test-data-source-config

데이터소스의 설정이 올바른지 확인한다.

1.1. add-cluster-data-source

클러스터 데이터소스를 도메인에 동적으로 추가한다.

  • alias

    addcds

  • 사용법

    add-cluster-data-source [-id,--dataSourceID <data-source-id>]
                            [-en,--exportName <export-name>]
                            [-dss,--dataSourceSelector <data-source-selector>]
                            [-lb,--loadBalance <true | false>]
                            [-ipc,--isPreConn <is-pre-conn>]
                            [-ufb,--useFailback <use-failback>]
                            [-cds,--componentDataSources <component-data-sources>]
                            [-oc,--onsConfig <ons-config>]
                            [-dsa,--dataSourceAffinity <data-source-affinity>]
                            [-f,--forceLock]
                            [-detail]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    클러스터 데이터소스의 ID이다. 하나의 도메인에서 클러스터 데이터소스 ID는 클러스터 데이터소스의 유일한 식별자로서 동작하도록 설정해야 한다.

    [-en,--exportName <export-name>]

    클러스터 데이터소스의 JNDI 이름을 설정한다. 서로 다른 두 데이터소스가 서로 다른 서버에 JNDI 바인드되는 것을 보장할 수 있으면 해당 데이터소스들은 서로 같은 JNDI 이름을 가질 수 있다. 이는 임의의 서버에서 동일한 JNDI 이름을 가지는 서로 다른 데이터소스를 허용하지 않음을 의미한다.

    설정되지 않으면 클러스터 데이터소스 ID를 JNDI 이름으로 사용한다.

    콤마(,)를 구분자로 사용하여 여러 개 입력할 수 있으며, 이 경우 구분자로 구분 된 어떠한 값을 사용하여도 JNDI lookup이 가능하다.

    [-dss,--dataSourceSelector <data-source-selector>]

    클러스터 데이터소스로부터 커넥션을 얻을 때 사용자나 개발자가 특정 컴포넌트 데이터소스 선택에 대한 정책을 직접 정의할 수 있다. jeus.jdbc.helper.DataSourceSelector 추상 클래스를 상속하여 구현하고 그 구현 클래스의 패키지 이름을 포함하는 이름을 적어준다. 이것을 설정하면 --loadBalance 설정은 아무런 기능을 하지 않으며 failover와 failback을 무조건 시도한다.

    • failover는 이 설정을 통하여 최초 선택된 컴포넌트 데이터소스 다음 인덱스의 컴포넌트 데이터소스를 시작으로 하여 한 번만 라운딩하는 방식으로 이루어진다.

    • failback은 Use Failback을 설정하는 경우 Failback이 수행되는 방식과 유사하게 이루어진다. 정책을 정의할 때는 대체로 동기화를 고려해야 하며 이는 구현자의 몫이다.

    [-lb,--loadBalance <true | false>]

    load balancing 여부를 설정한다.

    • true : --useFailback 설정은 아무런 기능을 하지 않게 된다.

    [-ipc,--isPreConn <is-pre-conn>]

    클러스터 데이터소스에 속한 컴포넌트 데이터소스들의 Connection Pool을 미리 생성할지 여부를 결정한다. 컴포넌트 데이터소스들의 Connection Pool을 미리 생성해 놓으면 성능상으로 이점이 있으나 리소스가 낭비되어 효율이 떨어진다.

    [-ufb,--useFailback <use-failback>]

    이전 버전의 JEUS에서는 failover만을 지원했으므로 이에 대한 호환성을 위해 제공하는 옵션이다.

    보조 데이터소스로 failover한 후에 주 데이터소스로 failback할 것인지의 여부를 설정한다. 기본적으로 failback을 시도한다.

    failback을 위해서는 반드시 주 데이터소스에 대하여 --checkQuery 및 --checkQueryPeriod를 설정해야 한다.

    [-cds,--componentDataSources <component-data-sources>]

    클러스터 데이터소스에 속한 컴포넌트 데이터소스들의 데이터소스 ID를 명시한다.

    [-oc,--onsConfig <ons-config>]

    ONS와 결합된 클러스터 데이터소를 사용하고자 할 때 설정한다. ONS상의 각 RAC 노드들이 ONS 통신에 사용하는 IP, 포트를 적는다. 클러스터 데이터소스는 설정된 IP, 포트들에 소켓 연결을 맺어 ONS 클라이언트로 동작하게 된다.

    다음과 같은 형식으로 적는다.

    nodes=host1:6200,host2:6200

    [-dsa,--dataSourceAffinity <data-source-affinity>]

    트랜잭션 사용 중 데이터소스에 대한 Affinity 설정 여부를 정한다. 이 설정이 켜지면 트랜잭션 처리가 하나의 멤버 데이터소스 인스턴스에 한정하여 이루어져 글로벌 트랜잭션은 처리 성능 향상을 도모할 수 있고, XA Emulation을 설정한 로컬 트랜잭션도 클러스터 데이터소스 사용 간 보장 될 수 있다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>add-cluster-data-source -id cds1 -cds ds1,ds2
    Successfully performed the ADD operation for cluster data source [cds1] to domain.
    Check the results using "add-cluster-data-source"

1.2. add-data-source

데이터소스를 도메인에 동적으로 추가한다.

  • alias

    addds

  • 사용법

    add-data-source [-id,--dataSourceID <data-source-id>]
                 [-user,--user <user>]
                 [-pw,--password <password>]
                 [-algorithm,--algorithm <algorithm>]
                 [-ac,--autoCommit <auto-commit-value>]
                 [-sqt,--stmtQueryTimeout <statement-query-timeout>]
                 [-aocl,--actionOnConnectionLeak <action-on-connection-leak>]
                 [-min,--min <minimum-size>]
                 [-max,--max <maximum-size>]
                 [-step,--step <resizing-step>]
                 [-period,--period <resizing-period>]
                 [-ew,--enableWait <true | false>]
                 [-wt,--waitTime <wait-time>]
                 [-dds,--delegationDataSource <delegation-data-source>]
                 [-muc,--maxUseCount <max-use-count>]
                 [-cq,--checkQuery <check-query>]
                 [-cqt,--checkQueryTimeout <check-query-timeout>]
                 [-nvi,--nonValidationInterval <non-validation-interval>]
                 [-cqp,--checkQueryPeriod <check-query-period>]
                 [-cqrc,--checkQueryRetrialCount <check-query-retrial-count>]
                 [-dpocq,--destroyPolicyOnCheckQuery <destroy-policy-on-check-query>]
                 [-scs,--stmtCachingSize <stmt-caching-size>]
                 [-sfs,--stmtFetchSize <stmt-fetch-size>]
                 [-ct,--connectionTrace <true | false>]
                 [-gct,--getConnectionTrace <get-connection-trace>]
                 [-act,--autoCommitTrace <auto-commit-trace>]
                 [-ust,--useSqlTrace <use-sql-trace>]
                 [-kcho,--keepConnectionHandleOpen <keep-connection-handle-open>]
                 [-en,--exportName <export-name>]
                 [-dscn,--dataSourceClassName <data-source-class-name>]
                 [-dst,--dataSourceType <data-source-type>]
                 [-vendor,--vendor <vendor>]
                 [-desc,--description <description>]
                 [-sn,--serverName <server-name>]
                 [-pn,--portNumber <port-number>]
                 [-dn,--databaseName <database-name>]
                 [-lt,--loginTimeout <login-timeout>]
                 [-il,--isolationLevel <isolation-level>]
                 [-pdt,--poolDestroyTimeout <pool-destroy-timeout>]
                 [-prop,--property <property>]
                 [-sxe,--supportXaEmulation <support-xa-emulation>]
                 [-ddba,--delegationDba <delegation-dba>]
                 [-dbat,--dbaTimeout <dba-timeout>]
                 [-cqc,--checkQueryClass <check-query-class>]
                 [-is,--initSql <init-sql>]
                 [-f,--forceLock]
                 [-detail]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    데이터소스의 ID이다. 하나의 도메인에서 데이터소스 ID는 데이터소스의 유일한 식별자로서 동작하도록 설정해야 한다.

    [-user,--user <user>]

    데이터베이스 사용자의 ID를 설정한다. 트랜잭션 처리 등을 위해서는 충분한 권한을 가지고 있어야 한다.

    [-pw,--password <password>]

    데이터베이스 사용자의 패스워드를 설정한다. 패스워드를 암호화해서 저장할 때에는 '{algorithm:keysize}ciphertext' 와 같은 형식으로 쓴다.

    [-algorithm,--algorithm <algorithm>]

    [동적 변경] 데이터베이스 사용자 패스워드의 알고리듬을 설정한다. algorithm 옵션은 password 옵션과 함께 사용될 때에만 의미가 있다.

    다음의 알고리듬을 사용할 수 있다.

    • base64

    • DES

    • DESede

    • AES

    • SEED

    • Blowfish

    [-ac,--autoCommit <TRUE | FALSE | DRIVER> ]

    데이터소스의 기본 auto-commit 설정으로 다음 중에 하나를 설정한다.

    • TRUE

    • FALSE

    • DRIVER : DRIVER로 설정하면 JEUS는 auto-commit 설정에 관여하지 않으며 JDBC 드라이버의 auto-commit 설정을 따르게 된다. XA 에뮬레이션 기능을 사용하는 Connection Pool 데이터소스 또는 XA 데이터소스의 경우 트랜잭션이 연동되어있지 않을 때만 이 설정값이 유효하다.

    [-sqt,--stmtQueryTimeout <statement-query-timeout> ]

    데이터소스로부터 얻은 커넥션을 통해 생성된 java.sql.Statement 객체에 지정될 쿼리 타임아웃을 설정한다.

    JEUS는 JDBC API를 통해 정의되고 JDBC 드라이버 벤더에서 구현한 쿼리 타임아웃 설정 메소드(java.sql.Statement#setQueryTimeout)를 호출할 뿐이다. JDBC 드라이버 벤더별로 쿼리 타임아웃 적용에 약간의 차이가 있다. (단위: ms)

    [-aocl,--actionOnConnectionLeak <action-on-connection-leak>]

    애플리케이션(주로 stateless 컴포넌트 - Servlet/JSP, stateless Session Bean, MDB)에서 사용하고 제대로 반환하지 않은 JDBC 커넥션을 감지했을 때 JEUS가 취하는 액션을 정의한다.

    다음의 값 중에 하나를 설정한다. 설정하지 않을 경우 서버의 설정을 따른다.

    • NO_ACTION : 아무런 액션을 취하지 않는다.

    • WARNING : 설정하면 반환되지 않은 JDBC 커넥션 정보를 로그로 남긴다.

    • AUTO_CLOSE : 반환되지 않은 JDBC 커넥션 정보를 로그로 남기며 해당 JDBC 커넥션을 회수한다.

    [-min,--min <minimum-size>]

    Connection Pool에 Pooling되는 커넥션의 최솟값을 지정한다.

    [-max,--max <maximum-size>]

    Connection Pool에 Pooling되는 커넥션의 최댓값을 지정한다.

    [-step,--step <resizing-step>]

    Connection Pool에 커넥션이 부족할 때 현재 커넥션의 개수가 최댓값 이하인 경우 DB로부터 커넥션을 새로 받아와 채우는 데, 이때 새로 받아오는 커넥션의 개수를 지정한다.

    [-period,--period <resizing-period>]

    Connection Pool의 크기를 최솟값에 맞춰 조정하는 주기를 설정한다. Connection Pool의 크기가 최솟값을 초과하는 경우에는 사용하지 않는 커넥션들을 닫아주고 Connection Pool의 크기가 최솟값에 미치지 못하는 경우에는 DB로 붙일 커넥션을 새로 받아와 채운다. (단위: ms)

    [-ew,--enableWait <true | false>]

    Connection Pool에 사용 가능한 커넥션이 없고 커넥션도 더 이상 늘릴 수 없을 때 커넥션 요청을 처리하는 방법을 결정한다.

    • true : 이용 가능한 커넥션을 얻기 위해 기다린다.

    • false : 새로운 커넥션을 만들어서 제공하지만 그 커넥션은 반환되었을 때 Pooling되지 않고 버려진다. 이를 일회용(disposable) 커넥션이라고도 한다.

    [-wt,--waitTime <wait-time>]

    --enable-wait이 true인 경우에만 유효한 설정으로 커넥션을 얻기 위해 대기하는 한계 시간을 나타낸다. 만약 이 시간이 지나도 커넥션을 얻지 못하면 JEUS는 타임아웃 예외를 발생시킨다. (단위: ms)

    [-dds,--delegationDataSource <delegation-data-source>]

    트랜잭션과 연동하지 않은 상태에서는 XA 데이터소스를 통해 커넥션을 얻기보다 Connection Pool 데이터소스를 통해 커넥션을 얻는 것이 낫다.

    기능상 차이도 없고, 트랜잭션 연동을 위한 기능을 포함하고 있는 XA 커넥션은 시스템에 부담을 더 주기 때문이다. 이를 위해 XA 데이터소스인 경우 이 설정을 통하여 트랜잭션과 연동하지 않은 상태에서의 커넥션 요청을 위임할 Connection Pool 데이터소스를 지정한다.

    한편 Oracle, DB2 등에서 XA 커넥션을 트랜잭션 없이도 사용한다. 트랜잭션에 연동하면서 사용하다 보면 XA를 시작할 수 없는 예외가 발생하기도 하는데 정확한 원인은 알 수 없기 때문에 이를 회피하기 위한 방편으로서도 이 설정을 이용한다.

    [-muc,--maxUseCount <max-use-count>]

    커넥션의 최대 사용 횟수이다. 이 사용 횟수 이상이 되면 새로운 커넥션으로 교체한다.

    (기본값: 0, 커넥션을 교체하지 않겠다는 의미)

    [-cq,--checkQuery <check-query>]

    커넥션 상태 점검에 사용될 쿼리(check-query)를 설정한다.

    보통 DB와의 연결 유효성만을 확인하면 되므로 간단한 select 쿼리를 사용할 것을 권장한다.

    [-cqt,--checkQueryTimeout <check-query-timeout>]

    커넥션 점검을 위해 check-query를 수행했을 때 DB가 응답이 없어 드라이버가 계속 기다리는 상황이 발생할 수 있다. 이런 경우를 피하기 위해 check-query에 대해 쿼리 타임아웃을 적용한다.

    이것은 JDBC API에서 정의한 java.sql.Statement#setQueryTimeout 메소드 호출을 통해 가능하다.

    1000ms보다 작을 경우 0으로 설정되므로 주의한다. (단위: ms)

    [-nvi,--nonValidationInterval <non-validation-interval>]

    커넥션 점검이 너무 잦아서 오버헤드가 발생하는 경우 설정한다.

    커넥션 점검을 수행하기 직전의 시각과 가장 최근의 커넥션 점검 시각과의 차이가 설정한 시간 간격 이내면 커넥션 점검을 생략한다. (단위: ms)

    예를 들어 이 설정값이 5000ms인 경우 어떤 커넥션의 마지막 커넥션 점검 시간으로부터 아직 5초가 지나지 않았다면 해당 커넥션에 대한 점검이 생략된 채 애플리케이션에 전달된다.

    [-cqp,--checkQueryPeriod <check-query-period>]

    Connection Pool의 커넥션들을 설정한 주기마다 체크하여 문제가 있는 커넥션을 제거한다. (단위: ms)

    클러스터 데이터소스에 속한 데이터소스는 자신의 상태 체크에 사용하므로 반드시 설정해야 한다.

    [-cqrc,--checkQueryRetrialCount <check-query-retrial-count>]

    커넥션 점검은 기본적으로 --destroyPolicyOnCheckQuery가 FAILED_CONNECTION_ONLY로 설정된 경우 한 번 수행된다.

    --destroyPolicyOnCheckQuery가 ALL_CONNECTIONS으로 설정된 경우에는 최초의 커넥션 점검에서 커넥션 이상이 확인되면 또 다른 커넥션에 대해서 한 번 더 커넥션 점검이 이루어져 총 두 번의 커넥션 점검이 수행될 수 있다.

    이 설정값이 이러한 기본 커넥션 점검 수행 횟수에 더해져 최종 커넥션 점검 수행 횟수가 정해진다.

    [-dpocq,--destroyPolicyOnCheckQuery <destroy-policy-on-check-query>]

    커넥션이 유효하지 않은 것으로 확인되었을 때 Connection Pool에 있는 다른 커넥션들에 대한 처리 정책을 설정한다.

    • FAILED_CONNECTION_ONLY : 유효하지 않은 것으로 확인된 커넥션만 제거한다.

    • ALL_CONNTECTIONS : 유효하지 않은 것으로 확인된 커넥션을 제거하고 Connection Pool에 있는 다른 커넥션의 유효성을 한 번 더 확인한다. 그조차 유효하지 않은 것으로 확인되면 Connection Pool의 모든 커넥션을 제거한다.

    [-scs,--stmtCachingSize <stmt-caching-size>]

    JDBC 드라이버는 애플리케이션에서 prepared statement를 요청할 때마다 파라미터로 넘어온 SQL 문장을 파싱한다. 이 파싱 작업이 성능에 영향을 줄 수 있기 때문에 이를 피하기 위해서 JEUS 내부적으로 prepared statement를 캐시하는 기능을 제공한다. 이 설정은 캐싱할 prepared statement의 개수를 지정한다. 이 기능을 사용하면 커넥션을 항상 열어둔 채로 사용하기 때문에 커넥션을 닫았을 때 드라이버가 수행하는 클리어 작업이 이뤄지지 않는다.

    예를 들어 Oracle JDBC 드라이버의 경우 auto-commit을 false로 설정해서 사용하다가 commit이나 rollback을 하지 않고 커넥션을 닫으면 무조건 commit을 하도록 되어 있는데 이러한 처리가 되지 않는다.

    만약 JDBC 드라이버에서 statement 캐시 기능을 제공한다면 그것을 사용하기를 권장한다.

    [-sfs,--stmtFetchSize <stmt-fetch-size>]

    JDBC 드라이버 statement의 fetch 사이즈를 설정한다.

    [-ct,--connectionTrace <true | false>]

    커넥션과 관련된 부가 정보 제공 여부를 결정한다.

    • false : --getConnectionTrace와 --autoCommitTrace가 모두 무효하다.

    [-gct,--getConnectionTrace <get-connection-trace>]

    애플리케이션이 java.sql.DataSource#getConnection을 호출했을 때의 Stack Trace를 확인할 수 있도록 한다.

    [-act,--autoCommitTrace <auto-commit-trace>]

    java.sql.Connection#setAutoCommit이 호출되었을 때 관련 로그와 Stack Trace를 서버 로그에 기록한다. 단, jeus.jdbc.connection-trace 로거의 로그 레벨을 FINE으로 설정해야 한다.

    [-ust,--useSqlTrace <use-sql-trace>]

    커넥션별로 사용하고 있는 SQL 쿼리를 보여주는 기능이다.

    jeus.jdbc.sql 로거의 레벨을 FINE으로 설정할 경우 서버 로그를 통해서 SQL 쿼리 히스토리를 확인할 수 있다. 이 기능을 사용할 경우 JDBC 드라이버의 statement 구현체를 JEUS의 것으로 감싸게되므로 JDBC 드라이버의 statement 객체를 캐스팅해서 사용하는 애플리케이션은 이 기능을 사용할 수 없다.

    [-kcho,--keepConnectionHandleOpen <keep-connection-handle-open>]

    true로 설정하면 XA 커넥션을 사용하고 Pool에 반납할 때 그에 대한 핸들(또는 논리적 커넥션)을 닫지 않고 열어둔다.

    DB2 universal 드라이버의 경우에 사용할 필요가 있다. 이 기능을 사용하면 커넥션 핸들이 닫히지 않으므로 커넥션을 닫을 때 드라이버가 수행하는 클리어 작업이 이뤄지지 않는다.

    예를 들어 Oracle JDBC 드라이버의 경우 auto-commit을 false로 설정해서 사용하다가 commit이나 rollback을 하지 않고 커넥션을 닫으면 무조건 commit을 하도록 되어 있는데 이러한 처리가 되지 않는다.

    [-en,--exportName <export-name>]

    데이터소스의 JNDI 이름을 설정한다.

    서로 다른 두 데이터소스가 서로 다른 서버에 JNDI 바인드되는 것을 보장할 수 있으면 해당 데이터소스들은 서로 같은 JNDI 이름을 가질 수 있다. 이는 임의의 서버에서 동일한 JNDI 이름을 가지는 서로 다른 데이터소스를 허용하지 않음을 의미한다.

    설정되지 않으면 데이터소스 ID를 JNDI 이름으로 사용한다.

    콤마(,)를 구분자로 사용하여 여러 개 입력할 수 있으며, 이 경우 구분자로 구분 된 어떠한 값을 사용하여도 JNDI lookup이 가능하다.

    [-dscn,--dataSourceClassName <data-source-class-name>]

    JDBC 드라이버 데이터소스 클래스의 이름을 설정한다. 패키지 이름을 포함하는 완전한 형태로 적는다.

    [-dst,--dataSourceType <data-source-type>]

    데이터소스의 타입을 설정한다.

    • DATA_SOURCE : Connection Pooling 서비스는 제공되지 않는다.

    • CONNECTION_POOL_DATA_SOURCE : Connection Pooling 서비스가 제공된다.

    • XA_DATA_SOURCE : Connection Pooling 서비스와 더불어 XA 연동이 지원된다.

    [-vendor,--vendor <vendor>]

    JDBC 드라이버 벤더의 이름을 설정한다.

    [-desc,--description <description>]

    데이터소스에 대한 설명이다.

    [-sn,--serverName <server-name>]

    데이터베이스가 실행되는 호스트 이름 또는 IP를 설정한다.

    [-pn,--portNumber <port-number>]

    데이터베이스 리스너의 포트 번호를 설정한다.

    [-dn,--databaseName <database-name>]

    데이터베이스의 이름을 설정한다.

    Oracle의 경우 데이터베이스의 SID를 설정한다.

    [-lt,--loginTimeout <login-timeout>]

    데이터베이스와 커넥션을 맺을 때 로그인 단계에서 기다리는 최대 시간이다. (단위: 초)

    [-il,--isolationLevel <isolation-level>]

    java.sql.Connection에서 정의하는 트랜잭션 isolation을 설정한다.

    [-pdt,--poolDestroyTimeout <pool-destroy-timeout>]

    Connection Pool destroy 완료를 기다리는 시간이다. (단위: ms)

    데이터소스를 정의한 애플리케이션을 undeploy하거나 서버가 내려갈 때 Connection Pool을 destroy하게 되는데, 커넥션을 제거하면서 DB와 네트워크 통신을 할 경우 블록될 가능성이 존재하여 Connection Pool destory를 마냥 기다리는 문제가 발생할 수 있다. 이와 같은 문제를 피하기 위해 이 설정을 사용한다. 설정한 시간 만큼만 Connection Pool destroy 완료를 기다려보고 undeploy 또는 서버 다운을 이어서 진행한다.

    [-prop,--property <property>]

    JDBC 드라이버별로 제각각일 수 있는 속성들의 설정을 모두 수용하기 위해 제공되는 통일된 설정 방법이다.

    한 개의 속성에 대하여 "이름:타입=값"의 형태로 입력한다.

    한 개 이상의 속성이 설정될 경우 콤마(,)로 구분한다.

    [-sxe,--supportXaEmulation <support-xa-emulation>]

    Connection Pool 데이터소스 타입의 데이터소스에만 유효한 설정으로 이 설정을 적용할 경우 Connection Pool 데이터소스의 커넥션이 글로벌 트랜잭션(XA)에 참여하도록 에뮬레이션한다.

    JEUS 6까지의 LocalXADataSource의 대체 옵션으로 ConnectionPoolDataSource 타입의 Connection Pool에 사용한다.

    하나의 트랜잭션에는 하나의 Connection Pool 데이터소스만 참여할 수 있다는 점에 유의해야 한다.

    [-ddba,--delegationDba <delegation-dba>]

    데이터베이스의 세션을 강제로 죽일 수 있는 권한(DBA 권한)을 가진 데이터소스(이하 DBA 위임 데이터소스)의 JNDI 이름을 설정한다. 이 설정을 한 데이터소스로부터 얻어진 커넥션을 이용한 쿼리 수행이 일정 시간 이상 지체되면 JEUS는 위임 DBA 데이터소스를 통해 해당 커넥션과 연관된 DB 세션을 강제로 제거하도록 하는 쿼리를 DB에 보낸다. 이후 애플리케이션이 사용 불가능해진 커넥션으로 인해 발생한 예외를 처리하고 커넥션을 닫아주게 되면 JEUS는 그 커넥션을 제거하고 DB로부터 새로운 커넥션을 얻어 Connection Pool에 넣는다.

    현재 Tibero, Oracle, Sybase에 대해서 이 기능을 지원한다. 이 기능은 JDBC 2.0 이하 JDBC 드라이버에서 쿼리 수행이 지나치게 오래 걸릴 때 그것을 중단시킬 방법으로서 고안된 것이다. 그러나 JDBC 3.0 또는 그 이상의 버전을 구현한 JDBC 드라이버는 java.sql.Statement#setQueryTimeout을 구현하므로 이 기능을 통해 강제로 DB 세션을 제거하기보다는 Statement Query Timeout 설정을 이용하는 것을 권장한다.

    특히, XA 데이터소스의 경우 XA가 정상적으로 진행하는 도중에 DB 세션이 제거되면 XA 처리에 문제가 발생할 수 있기 때문에 Statement Query Timeout과 트랜잭션 타임아웃을 적절하게 설정하여 사용하도록 한다.

    [-dbat,--dbaTimeout <dba-timeout>]

    위임 DBA 데이터소스는 이 설정으로 지정한 시간 동안만 커넥션의 쿼리 수행을 기다린다. 설정한 시간이 경과하면 해당 커넥션과 연관된 DB 세션을 강제로 제거하도록 하는 쿼리를 DB로 보낸다.

    --delegationDba가 설정된 경우에만 유효하다. (단위: ms)

    [-cqc,--checkQueryClass <check-query-class>]

    사용자나 개발자가 커넥션 점검 기능을 커스터마이즈할 경우 그것을 위해 구현한 클래스의 패키지 이름을 포함한 이름을 적어준다.

    이때 그 클래스는 반드시 jeus.jdbc.connectionpool.JEUSConnectionChecker 인터페이스를 구현해야 한다.

    [-is,--initSql <init-sql>]

    커넥션을 생성한 후 가장 처음으로 수행할 SQL 쿼리를 설정한다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>add-data-source -id ds1 -dst ConnectionPoolDataSource
    -dscn oracle.jdbc.pool.OracleConnectionPoolDataSource -sn 61.77.153.4 -pn 1521
    -dn orcl -user scott -password tiger -property driverType;java.lang.String;thin
    Successfully performed the ADD operation for data source [ds1] to domain.
    Check the results using "add-data-source"

1.3. list-cluster-data-sources

도메인에 존재하는 모든 클러스터 데이터소스의 목록을 조회한다. 특정 데이터소스의 ID를 명시할 경우 해당 클러스터 데이터소스의 설정을 자세히 조회한다.

  • alias

    listcds, lscds

  • 사용법

    list-cluster-data-sources [-id,--dataSourceID <data-source-id>]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    클러스터 데이터소스 ID이다.

  • 예제

    [MASTER]domain1.adminServer>list-cluster-data-sources
    The list of cluster data sources
    ================================================================================
    +--------------------+-----------------------+---------------------------------+
    |   Data source ID   |    JNDI export name   |      Component data sources     |
    +--------------------+-----------------------+---------------------------------+
    | cds1               | cds1                  | [ds1, ds2]                      |
    | cds2               | cds2                  | [ds3, ds4]                      |
    +--------------------+-----------------------+---------------------------------+
    ================================================================================
    
    [MASTER]domain1.adminServer>list-cluster-data-sources -id cds1
    The configuration of cluster data source [cds1]
    ================================================================================
    +------------------------------------------+-----------------------------------+
    |            Configuration name            |        Configuration value        |
    +------------------------------------------+-----------------------------------+
    | id                                       | cds1                              |
    | export-name                              | cds1                              |
    | load-balance                             | false                             |
    | is-pre-conn                              | false                             |
    | use-failback                             | true                              |
    | component-data-sources                   | [ds1, ds2]                        |
    +------------------------------------------+-----------------------------------+
    ================================================================================

1.4. list-data-sources

도메인에 존재하는 모든 데이터소스의 목록을 조회한다. 특정 데이터소스의 ID를 명시할 경우 해당 데이터소스의 설정을 자세히 조회한다.

  • alias

    listds, lsds

  • 사용법

    list-data-sources [-id,--dataSourceID <data-source-id>]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    데이터소스 ID이다.

  • 예제

    [MASTER]domain1.adminServer>list-data-sources
    The list of data sources
    ================================================================================
    +----------------+----------------------+--------------------------------------+
    | Data source ID |   JNDI export name   |           Data source type           |
    +----------------+----------------------+--------------------------------------+
    | ds1            | ds1                  | ConnectionPoolDataSource             |
    | ds2            | ds2                  | ConnectionPoolDataSource             |
    | ds3            | ds3                  | ConnectionPoolDataSource             |
    +----------------+----------------------+--------------------------------------+
    ================================================================================
    
    [MASTER]domain1.adminServer>list-data-sources -id ds1
    The configuration of the data source [ds1]
    ================================================================================
    +----------------------------+-------------------------------------------------+
    |     Configuration name     |               Configuration value               |
    +----------------------------+-------------------------------------------------+
    | id                         | ds1                                             |
    | export-name                | ds1                                             |
    | data-source-class-name     | oracle.jdbc.pool.OracleConnectionPoolDataSource |
    | data-source-type           | ConnectionPoolDataSource                        |
    | vendor                     | oracle                                          |
    | server-name                | 61.77.153.4                                     |
    | port-number                |                                            1521 |
    | database-name              | orcl                                            |
    | user                       | scott                                           |
    | password                   | tiger                                           |
    | login-timeout              |                                               0 |
    | auto-commit                | DRIVER                                          |
    | stmt-query-timeout         |                                               0 |
    | pool-destroy-timeout       |                                           10000 |
    | property                   | [driverType;java.lang.String;thin]              |
    | action-on-connection-leak  | Warning                                         |
    | support-xa-emulation       | false                                           |
    | min                        |                                              10 |
    | max                        |                                              50 |
    | step                       |                                               1 |
    | period                     |                                         3600000 |
    | enable-wait                | false                                           |
    | wait-time                  |                                           10000 |
    | max-use-count              |                                               0 |
    | dbaTimeout                 |                                              -1 |
    | stmt-caching-size          |                                              -1 |
    | stmt-fetch-size            |                                              -1 |
    | connection-trace           | false                                           |
    | get-connection-trace       | true                                            |
    | auto-commit-trace          | false                                           |
    | use-sql-trace              | false                                           |
    | keep-connection-handle-open| false                                           |
    +----------------------------+-------------------------------------------------+
    ================================================================================

1.5. modify-cluster-data-source

클러스터 데이터소스의 설정을 변경한다. 대부분의 설정이 동적으로 변경 가능하다.

  • alias

    modifycds

  • 사용법

    modify-cluster-data-source -id,--dataSourceID <data-source-id>
                               [-en,--exportName <export-name>]
                               [-dss,--dataSourceSelector <data-source-selector>]
                               [-lb,--loadBalance <true | false>]
                               [-ipc,--isPreConn <is-pre-conn>]
                               [-ufb,--useFailback <use-failback>]
                               [-cds,--componentDataSources <component-data-sources>]
                               [-oc,--onsConfig <ons-config>]
                               [-dsa,--dataSourceAffinity <data-source-affinity>]
                               [-f,--forceLock]
                               [-detail]
  • 파라미터

    파라미터 설명

    -id,--dataSourceID <data-source-id>]

    클러스터 데이터소스의 ID을 설정한다.

    하나의 도메인에서 클러스터 데이터소스 ID는 클러스터 데이터소스의 유일한 식별자로서 동작하도록 설정해야 한다.

    [-en,--exportName <export-name>]

    클러스터 데이터소스의 JNDI 이름을 설정한다. 서로 다른 두 데이터소스가 서로 다른 서버에 JNDI 바인드되는 것을 보장할 수 있으면 해당 데이터소스들은 서로 같은 JNDI 이름을 가질 수 있다. 이는 임의의 서버에서 동일한 JNDI 이름을 가지는 서로 다른 데이터소스를 허용하지 않음을 의미한다.

    설정되지 않으면 클러스터 데이터소스 ID를 JNDI 이름으로 사용한다. 설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    콤마(,)를 구분자로 사용하여 여러 개 입력할 수 있으며, 이 경우 구분자로 구분 된 어떠한 값을 사용하여도 JNDI lookup이 가능하다.

    [-dss,--dataSourceSelector <data-source-selector>]

    [동적 변경] 클러스터 데이터소스로부터 커넥션을 얻을 때 사용자나 개발자가 특정 컴포넌트 데이터소스 선택에 대한 정책을 직접 정의할 수 있다.

    jeus.jdbc.helper.DataSourceSelector 추상 클래스를 상속하여 구현하고 그 구현 클래스의 패키지 이름을 포함하는 이름을 적어준다. 이것을 설정하면 --loadBalance 설정은 아무런 기능을 하지 않으며 failover와 failback을 무조건 시도한다.

    • failover는 이 설정을 통하여 최초 선택된 컴포넌트 데이터소스 다음 인덱스의 컴포넌트 데이터소스를 시작으로 하여 한 번만 라운딩하는 방식으로 이루어진다.

    • failback은 Use failback을 설정할 때 failback이 수행되는 방식과 유사하게 이루어진다. 정책을 정의할 때는 대체로 동기화를 고려해야 하며 이는 구현자의 몫이다. 설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-lb,--loadBalance <true | false>]

    [동적 변경] load balancing 여부를 설정한다.

    • true : --useFailback 설정은 아무런 기능을 하지 않게 된다.

    [-ipc,--isPreConn <is-pre-conn>]

    [동적 변경] 클러스터 데이터소스에 속한 컴포넌트 데이터소스들의 Connection Pool을 미리 생성할지 여부를 결정한다. 컴포넌트 데이터소스들의 Connection Pool을 미리 생성해 놓으면 성능상으로 이점이 있으나 리소스의 절약면에서는 좋지 못하다.

    [-ufb,--useFailback <use-failback>]

    [동적 변경] 이전 버전의 JEUS에서는 failover만을 지원했으므로 이에 대한 호환성을 위해 제공하는 옵션이다.

    보조 데이터소스로 failover한 후에 주 데이터소스로 failback할 것인지의 여부를 설정한다. 기본적으로 failback을 시도한다. failback을 위해서는 반드시 주 데이터소스에 대하여 --checkQuery 및 --checkQueryPeriod를 설정해야 한다.

    [-cds,--componentDataSources <component-data-sources>]

    [동적 변경] 클러스터 데이터소스에 속한 컴포넌트 데이터소스들의 데이터소스 ID를 명시한다.

    [-oc,--onsConfig <ons-config>]

    ONS와 결합된 클러스터 데이터소를 사용하고자 할 때 설정한다. ONS상의 각 RAC 노드들이 ONS 통신에 사용하는 IP, 포트를 적는다. 클러스터 데이터소스는 설정된 IP, 포트들에 소켓 연결을 맺어 ONS 클라이언트로 동작하게 된다.

    다음과 같은 형식으로 적는다.

    nodes=host1:6200,host2:6200

    [-dsa,--dataSourceAffinity <data-source-affinity>]

    트랜잭션 사용 중 데이터소스에 대한 Affinity 설정 여부를 정한다. 이 설정이 켜지면 트랜잭션 처리가 하나의 멤버 데이터소스 인스턴스에 한정하여 이루어져 글로벌 트랜잭션은 처리 성능 향상을 도모할 수 있고, XA Emulation을 설정한 로컬 트랜잭션도 클러스터 데이터소스 사용 간 보장 될 수 있다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>modify-cluster-data-source -id cds1 -cds ds1 
    Successfully performed the MODIFY operation for configuration of the cluster data source [cds1].
    Check the results using "modify-cluster-data-source -id cds1"

1.6. modify-data-source

데이터소스의 설정을 변경한다. 일부 설정은 동적으로 변경 가능하다.

  • alias

    modifyds

  • 사용법

    modify-data-source -id,--dataSourceID <data-source-id>
                 [-user,--user <user>]
                 [-pw,--password <password>]
                 [-algorithm,--algorithm <algorithm>]
                 [-ac,--autoCommit <TRUE | FALSE | DRIVER> ]
                 [-sqt,--stmtQueryTimeout <statement-query-timeout>]
                 [-aocl,--actionOnConnectionLeak <action-on-connection-leak>]
                 [-min,--min <minimum-size>]
                 [-max,--max <maximum-size>]
                 [-step,--step <resizing-step>]
                 [-period,--period <resizing-period>]
                 [-ew,--enableWait <true | false>]
                 [-wt,--waitTime <wait-time>]
                 [-dds,--delegationDataSource <delegation-data-source>]
                 [-muc,--maxUseCount <max-use-count>]
                 [-cq,--checkQuery <check-query>]
                 [-cqt,--checkQueryTimeout <check-query-timeout>]
                 [-nvi,--nonValidationInterval <non-validation-interval>]
                 [-cqp,--checkQueryPeriod <check-query-period>]
                 [-cqrc,--checkQueryRetrialCount <check-query-retrial-count>]
                 [-dpocq,--destroyPolicyOnCheckQuery <destroy-policy-on-check-query>]
                 [-scs,--stmtCachingSize <stmt-caching-size>]
                 [-sfs,--stmtFetchSize <stmt-fetch-size>]
                 [-ct,--connectionTrace <true | false>]
                 [-gct,--getConnectionTrace <get-connection-trace>]
                 [-act,--autoCommitTrace <auto-commit-trace>]
                 [-ust,--useSqlTrace <use-sql-trace>]
                 [-kcho,--keepConnectionHandleOpen <keep-connection-handle-open>]
                 [-en,--exportName <export-name>]
                 [-dscn,--dataSourceClassName <data-source-class-name>]
                 [-dst,--dataSourceType <data-source-type>]
                 [-vendor,--vendor <vendor>]
                 [-desc,--description <description>]
                 [-sn,--serverName <server-name>]
                 [-pn,--portNumber <port-number>]
                 [-dn,--databaseName <database-name>]
                 [-lt,--loginTimeout <login-timeout>]
                 [-il,--isolationLevel <isolation-level>]
                 [-pdt,--poolDestroyTimeout <pool-destroy-timeout>]
                 [-prop,--property <property>]
                 [-sxe,--supportXaEmulation <support-xa-emulation>]
                 [-ddba,--delegationDba <delegation-dba>]
                 [-dbat,--dbaTimeout <dba-timeout>]
                 [-cqc,--checkQueryClass <check-query-class>]
                 [-is,--initSql <init-sql>]
                 [-f,--forceLock]
                 [-detail]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    데이터소스의 ID를 설정한다. 하나의 도메인에서 데이터소스 ID는 데이터소스의 유일한 식별자로서 동작하도록 설정해야 한다.

    [-user,--user <user>]

    [동적 변경] 데이터베이스 사용자의 ID를 설정한다. 트랜잭션 처리 등을 위해서는 충분한 권한을 가지고 있어야 한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-pw,--password <password>]

    [동적 변경] 데이터베이스 사용자의 패스워드를 설정한다.

    패스워드는 '{algorithm:keysize}ciphertext' 와 같은 형식으로 암호화해서 저장한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-algorithm,--algorithm <algorithm>]

    [동적 변경] 데이터베이스 사용자 패스워드의 알고리듬을 설정한다. algorithm 옵션은 password 옵션과 함께 사용될 때에만 의미가 있다.

    사용할 수 있는 알고리듬은 다음 중에 선택한다.

    • base64

    • DES

    • DESede

    • AES

    • SEED

    • Blowfish

    [-ac,--autoCommit <TRUE | FALSE | DRIVER>]

    [동적 변경] 데이터소스의 기본 auto-commit 설정으로 다음 중에 하나를 설정한다.

    • TRUE

    • FALSE

    • DRIVER : JEUS는 auto-commit 설정에 관여하지 않으며 JDBC 드라이버의 auto-commit 설정을 따른다.

    XA 에뮬레이션 기능을 사용하는 Connection Pool 데이터소스 또는 XA 데이터소스의 경우 트랜잭션이 연동되어 있지 않을 때만 이 설정값이 유효하다.

    [-sqt,--stmtQueryTimeout <statement-query-timeout>]

    [동적 변경] 데이터소스로부터 얻은 커넥션을 통해 생성된 java.sql.Statement 객체에 지정될 쿼리 타임아웃을 설정한다.

    JEUS는 JDBC API를 통해 정의되고 JDBC 드라이버 벤더에서 구현한 쿼리 타임아웃 설정 메소드(java.sql.Statement#setQueryTimeout)를 호출할 뿐이다. JDBC 드라이버 벤더별로 쿼리 타임아웃 적용에 약간의 차이를 보인다. (단위: ms)

    [-aocl,--actionOnConnectionLeak <action-on-connection-leak>]

    [동적 변경] 애플리케이션(주로 stateless 컴포넌트 - Servlet/JSP, stateless Session Bean, MDB)에서 사용하고 제대로 반환하지 않은 JDBC 커넥션을 감지했을 때 JEUS가 취하는 액션을 정의한다.

    다음의 값 중에 하나를 설정한다.

    • NO_ACTION : 아무런 액션을 취하지 않는다.

    • WARNING : 반환되지 않은 JDBC 커넥션 정보를 로그로 남긴다.

    • AUTO_CLOSE : 반환되지 않은 JDBC 커넥션 정보를 로그로 남기며 해당 JDBC 커넥션을 회수한다.

    설정하지 않을 경우 서버의 설정을 따른다.설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-min,--min <minimum-size>]

    [동적 변경] Connection Pool에 Pooling되는 커넥션의 최솟값을 지정한다.

    [-max,--max <maximum-size>]

    [동적 변경] Connection Pool에 Pooling되는 커넥션의 최댓값을 지정한다.

    [-step,--step <resizing-step>]

    [동적 변경] Connection Pool에 커넥션이 부족할 때 현재 커넥션의 개수가 최댓값 이하인 경우 DB로부터 커넥션을 새로 받아와 채우는 데 이때 새로 받아오는 커넥션의 개수를 지정한다.

    [-period,--period <resizing-period>]

    [동적 변경] Connection Pool의 크기를 최솟값에 맞춰 조정하는 주기를 설정한다. Connection Pool의 크기가 최솟값을 초과하는 경우에는 사용하지 않는 커넥션들을 닫아주고 Connection Pool의 크기가 최솟값에 미치지 못하는 경우에는 DB로 붙여 커넥션을 새로 받아와 채운다. (단위: ms)

    [-ew,--enableWait <true | false>]

    [동적 변경] Connection Pool에 사용 가능한 커넥션이 없고 커넥션도 더 이상 늘릴 수 없을 때 커넥션 요청을 처리하는 방법을 결정한다.

    • true : 이용 가능한 커넥션을 얻기 위해 기다린다.

    • false : 새로운 커넥션을 만들어서 제공하지만 그 커넥션은 반환되었을 때 Pooling되지 않고 버려진다. 이를 일회용(disposable) 커넥션이라고도 한다.

    [-wt,--waitTime <wait-time>]

    [동적 변경] --enable-wait이 true인 경우에만 유효한 설정으로 커넥션을 얻기 위해 대기하는 한계 시간을 나타낸다. 만약 이 시간이 지나도 커넥션을 얻지 못하면 JEUS는 타임아웃 예외를 발생시킨다. (단위: ms)

    [-dds,--delegationDataSource <delegation-data-source>]

    [동적 변경] 트랜잭션과 연동하지 않은 상태에서는 XA 데이터소스를 통해 커넥션을 얻기보다 Connection Pool 데이터소스를 통해 커넥션을 얻는 것이 낫다.

    기능의 차이도 없고, 트랜잭션 연동을 위한 기능을 포함하고 있는 XA 커넥션은 시스템에 부담을 더 주기 때문이다. 이를 위해 XA 데이터소스인 경우 이 설정을 통하여 트랜잭션과 연동하지 않은 상태에서의 커넥션 요청을 위임할 Connection Pool 데이터소스를 지정한다. 한편 Oracle, DB2 등에서 XA 커넥션을 트랜잭션 없이도 사용하고, 트랜잭션에 연동도 하면서 사용하다 보면 XA를 시작할 수 없는 예외가 발생하기도 하는데 정확한 원인은 알 수 없기 때문에 이를 회피하기 위한 방편으로서도 이 설정을 이용한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-muc,--maxUseCount <max-use-count>]

    [동적 변경] 커넥션의 최대 사용 횟수이다. 이 사용 횟수 이상이 되면 새로운 커넥션으로 교체한다. 기본값은 0으로 이는 커넥션을 교체하지 않겠다는 의미다.

    [-cq,--checkQuery <check-query>]

    [동적 변경] 커넥션 상태 점검에 사용될 쿼리(check-query)를 설정한다. 보통 DB와의 연결 유효성만을 확인하면 되므로 간단한 select 쿼리를 사용하는 것을 권장한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-cqt,--checkQueryTimeout <check-query-timeout>]

    [동적 변경] 커넥션 점검을 위해 check-query를 수행했을 때 DB가 응답이 없어 드라이버가 계속 기다리는 상황이 발생할 수 있다. 이런 경우를 피하기 위해 check-query에 대해 쿼리 타임아웃을 적용한다. 이것은 JDBC API에서 정의한 java.sql.Statement#setQueryTimeout 메소드의 호출을 통해 가능하다.

    1000ms보다 작을 경우 0으로 설정되므로 주의한다. (단위: ms)

    [-nvi,--nonValidationInterval <non-validation-interval>]

    [동적 변경] 커넥션 점검이 너무 잦아서 오버헤드가 발생하는 경우 설정한다. 커넥션 점검을 수행하기 직전의 시각과 가장 최근의 커넥션 점검 시각과의 차이가 설정한 시간 간격 이내면 커넥션 점검을 생략하도록 하는 설정이다. (단위: ms)

    예를 들어 이 설정값이 5000ms인 경우 어떤 커넥션의 마지막 커넥션 점검 시간으로부터 아직 5초가 지나지 않았다면 그 커넥션에 대한 점검이 생략된 채 애플리케이션에 전달되게 된다.

    [-cqp,--checkQueryPeriod <check-query-period>]

    [동적 변경] Connection Pool의 커넥션들을 설정한 주기마다 체크하여 문제가 있는 커넥션을 제거한다. (단위: ms)

    클러스터 데이터소스에 속한 데이터소스는 자신의 상태 체크에 사용하므로 반드시 설정해야 한다.

    [-cqrc,--checkQueryRetrialCount <check-query-retrial-count>]

    [동적 변경] 커넥션 점검은 기본적으로 --destroyPolicyOnCheckQuery가 FAILED_CONNECTION_ONLY로 설정된 경우 한 번 수행된다.

    --destroyPolicyOnCheckQuery가 ALL_CONNECTIONS로 설정되어 있을 경우에는 최초의 커넥션 점검에서 커넥션 이상이 확인되면 또 다른 커넥션에 대해서 한 번 더 커넥션 점검이 이루어져 총 두 번의 커넥션 점검이 수행될 수 있다. 이 설정값이 이러한 기본 커넥션 점검 수행 횟수에 더해져 최종 커넥션 점검 수행 횟수가 정해진다.

    [-dpocq,--destroyPolicyOnCheckQuery <destroy-policy-on-check-query>]

    [동적 변경] 커넥션이 유효하지 않은 것으로 확인되었을 때 Connection Pool에 있는 다른 커넥션들에 대한 처리 정책을 설정한다.

    • FAILED_CONNECTION_ONLY : 유효하지 않은 것으로 확인된 커넥션만 제거한다.

    • ALL_CONNTECTIONS : 유효하지 않은 것으로 확인된 커넥션을 제거하고 Connection Pool에 있는 다른 커넥션의 유효성을 한 번 더 확인한다. 그조차 유효하지 않은 것으로 확인되면 Connection Pool의 모든 커넥션을 제거한다.

    [-scs,--stmtCachingSize <stmt-caching-size>]

    [동적 변경] JDBC 드라이버는 애플리케이션에서 prepared statement를 요청할 때마다 파라미터로 넘어온 SQL 문장을 파싱한다. 이 파싱 작업이 성능에 영향을 줄 수 있기 때문에 이를 피하기 위해서 JEUS 내부적으로 prepared statement를 캐시하는 기능을 제공한다. 이 설정은 캐싱할 prepared statement의 개수를 지정한다. 이 기능을 사용하면 커넥션을 항상 열어둔 채로 사용하기 때문에 커넥션을 닫았을 때 드라이버가 해주는 클리어 작업이 이뤄지지 않는다.

    예를 들어 Oracle JDBC 드라이버의 경우 auto-commit을 false로 설정해서 사용하다가 commit이나 rollback을 하지 않고 커넥션을 닫으면 무조건 commit을 하도록 되어 있는데 이러한 처리가 되지 않는다.

    만약 JDBC 드라이버에서 statement 캐시 기능을 제공한다면 그것을 사용하기 바란다.

    [-sfs,--stmtFetchSize <stmt-fetch-size>]

    [동적 변경] JDBC 드라이버 statement의 fetch 사이즈를 설정한다.

    [-ct,--connectionTrace <true | false>]

    [동적 변경] 커넥션 관련 부가 정보 제공 여부를 결정한다.

    • false : --getConnectionTrace와 --autoCommitTrace가 모두 무효가 된다.

    [-gct,--getConnectionTrace <get-connection-trace>]

    [동적 변경] 애플리케이션이 java.sql.DataSource#getConnection을 호출했을 때의 Stack Trace를 확인할 수 있도록 한다.

    [-act,--autoCommitTrace <auto-commit-trace>]

    [동적 변경] java.sql.Connection#setAutoCommit이 호출되었을 때 관련 로그와 Stack Trace를 서버 로그에 기록하도록 한다. 단, jeus.jdbc.connection-trace 로거의 로그 레벨을 FINE으로 설정해야 한다.

    [-ust,--useSqlTrace <use-sql-trace>]

    [동적 변경] Connection별로 사용하고 있는 SQL 쿼리를 보여주는 기능이다. jeus.jdbc.sql 로거의 레벨을 FINE으로 설정할 경우 서버 로그를 통해서 SQL 쿼리 히스토리를 확인할 수 있다. 이 기능을 사용할 경우 JDBC 드라이버의 statement 구현체를 JEUS의 것으로 감싸게되므로 JDBC 드라이버의 statement 객체를 캐스팅해서 사용하는 애플리케이션은 이 기능을 사용할 수 없다.

    [-kcho,--keepConnectionHandleOpen <keep-connection-handle-open>]

    [동적 변경] true로 설정하면 XA 커넥션을 사용하고 Pool에 반납할 때 그에 대한 핸들(또는 논리적 커넥션)을 닫지 않고 열어둔다.

    DB2 universal 드라이버의 경우에 사용할 필요가 있다. 이 기능을 사용하면 커넥션 핸들이 닫히지 않으므로 커넥션을 닫을 때 드라이버가 해주는 클리어 작업이 이뤄지지 않는다.

    예를 들어 Oracle JDBC 드라이버의 경우 auto-commit을 false로 설정해서 사용하다가 commit이나 rollback을 하지 않고 커넥션을 닫으면 무조건 commit을 하도록 되어 있는데 이러한 처리가 되지 않는다.

    [-en,--exportName <export-name>]

    데이터소스의 JNDI 이름을 설정한다. 서로 다른 두 데이터소스가 서로 다른 서버에 JNDI 바인드되는 것을 보장할 수 있으면 해당 데이터소스들은 서로 같은 JNDI 이름을 가질 수 있다. 이는 임의의 서버에서 동일한 JNDI 이름을 가지는 서로 다른 데이터소스를 허용하지 않음을 의미한다.

    설정되지 않으면 데이터소스 ID를 JNDI 이름으로 사용한다. 설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    콤마(,)를 구분자로 사용하여 여러 개 입력할 수 있으며, 이 경우 구분자로 구분 된 어떠한 값을 사용하여도 JNDI lookup이 가능하다.

    [-dscn,--dataSourceClassName <data-source-class-name>]

    JDBC 드라이버 데이터소스 클래스의 이름을 설정한다. 패키지 이름을 포함하는 완전한 형태로 적는다.

    [-dst,--dataSourceType <data-source-type>]

    데이터소스의 타입을 설정한다.

    • DATA_SOURCE : Connection Pooling 서비스는 제공되지 않는다.

    • CONNECTION_POOL_DATA_SOURCE : Connection Pooling 서비스가 제공되며 XA_DATA_SOURCE로 설정한 경우 Connection Pooling 서비스와 더불어 XA 연동이 지원된다.

    [-vendor,--vendor <vendor>]

    JDBC 드라이버 벤더의 이름를 설정한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-desc,--description <description>]

    데이터소스에 대한 설명이다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-sn,--serverName <server-name>]

    데이터베이스가 실행되는 호스트 이름 또는 IP를 설정한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-pn,--portNumber <port-number>]

    데이터베이스 리스너의 포트 번호를 설정한다. 설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-dn,--databaseName <database-name>]

    데이터베이스의 이름을 설정한다. Oracle의 경우 데이터베이스의 SID를 설정한다. 설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-lt,--loginTimeout <login-timeout>]

    데이터베이스와 커넥션을 맺을 때 로그인 단계에서 기다리는 최대 시간을 설정한다. (단위: 초)

    [-il,--isolationLevel <isolation-level>]

    java.sql.Connection에서 정의하는 트랜잭션 isolation을 설정한다. 설정하지 않은 경우 JDBC 드라이버의 기본 설정을 따른다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-pdt,--poolDestroyTimeout <pool-destroy-timeout>]

    Connection Pool destroy 완료를 기다리는 시간이다. (단위: ms)

    데이터소스를 정의한 애플리케이션을 undeploy하거나 서버가 내려갈 때 Connection Pool을 destroy하게 되는데, 커넥션을 제거하면서 DB와 네트워크 통신을 할 경우 블록될 가능성이 존재하여 Connection Pool destory를 마냥 기다리는 문제가 발생할 수 있다. 이와 같은 문제를 피하기 위해 이 설정을 사용한다.

    설정한 시간 만큼만 Connection Pool destroy 완료를 기다려보고 undeploy 또는 서버 다운을 이어서 진행한다.

    [-prop,--property <property>]

    JDBC 드라이버별로 제각각일 수 있는 속성들의 설정을 모두 수용하기 위해 제공되는 통일된 설정 방법이다.

    • 한 개의 속성은 "이름:타입=값"의 형태로 입력한다.

    • 한 개 이상의 속성을 설정할 경우 콤마(,)로 구분한다.

    [-sxe,--supportXaEmulation <support-xa-emulation>]

    Connection Pool 데이터소스 타입의 데이터소스에만 유효한 설정으로 이 설정을 적용할 경우 Connection Pool 데이터소스의 Connection이 글로벌 트랜잭션(XA)에 참여하도록 에뮬레이션한다.

    JEUS 6까지의 LocalXADataSource의 대체 옵션으로 ConnectionPoolDataSource 타입의 Connection Pool에 사용한다. 하나의 트랜잭션에는 하나의 Connection Pool 데이터소스만 참여할 수 있다는 점에 유의해야 한다.

    [-ddba,--delegationDba <delegation-dba>]

    데이터베이스의 세션을 강제로 죽일 수 있는 권한(DBA 권한)을 가진 데이터소스(이하 DBA 위임 데이터소스)의 JNDI 이름을 설정한다. 이 설정을 한 데이터소스로부터 얻어진 커넥션을 이용한 쿼리 수행이 일정 시간 이상 지체되면 JEUS는 위임 DBA 데이터소스를 통해 해당 커넥션과 연관된 DB 세션을 강제로 제거하도록 하는 쿼리를 DB에 날린다. 이후 애플리케이션이 사용 불가능해진 커넥션으로 인해 발생한 예외를 처리하고 커넥션을 닫아주게 되면 JEUS는 그 커넥션을 제거하고 DB로부터 새로운 커넥션을 얻어 Connection Pool에 넣는다.

    현재 Tibero, Oracle, Sybase에 대해서 이 기능을 지원한다. 이 기능은 JDBC 2.0 이하 JDBC 드라이버에서 쿼리 수행이 지나치게 오래 걸릴 때 그것을 중단시킬 방법으로서 고안된 것이다. 그러나 JDBC 3.0 또는 그 이상의 버전을 구현한 JDBC 드라이버는 java.sql.Statement#setQueryTimeout을 구현하므로 이 기능을 통해 강제로 DB 세션을 제거하기보다는 Statement Query Timeout 설정을 이용하는 것을 권장한다. 특히나 XA 데이터소스의 경우 XA가 정상적으로 진행하는 도중에 DB 세션이 제거되면 XA 처리에 문제가 발생할 수 있기 때문에 Statement Query Timeout과 트랜잭션 타임아웃을 적절하게 설정하여 사용하도록 한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-dbat,--dbaTimeout <dba-timeout>]

    위임 DBA 데이터소스는 이 설정으로 지정한 시간 동안만 커넥션의 쿼리 수행을 기다려준다. 설정한 시간이 경과하면 해당 커넥션과 연관된 DB 세션을 강제로 제거하는 쿼리를 DB로 보낸다.

    --delegationDba가 설정된 경우에만 유효하다. (단위: ms)

    [-cqc,--checkQueryClass <check-query-class>]

    사용자나 개발자가 커넥션 점검 기능을 커스터마이즈할 경우 그것을 위해 구현한 클래스의 패키지 이름을 포함한 이름을 적어준다. 이때 그 클래스는 반드시 jeus.jdbc.connectionpool.JEUSConnectionChecker 인터페이스를 구현해야 한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-is,--initSql <init-sql>]

    커넥션을 생성한 후 가장 처음으로 수행할 SQL 쿼리를 설정한다.

    설정을 해제하려면 옵션 값으로 "unset"을 입력한다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>modify-data-source -id ds1 -min 10 -max 50
    Successfully performed the MODIFY operation for configuration of the data source [ds1].
    Check the results using "modify-data-source -id ds1"

1.7. remove-cluster-data-source

클러스터 데이터소스를 도메인으로부터 동적으로 삭제한다.

  • alias

    rmcds

  • 사용법

    remove-cluster-data-source [-id,--dataSourceID <data-source-id>]
                               [-f,--forceLock]
                               [-detail]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    클러스터 데이터소스 ID이다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>remove-cluster-data-source -id cds1
    Successfully performed the REMOVE operation for cluster data source [cds1] from domain.
    Check the results using "remove-cluster-data-source"

1.8. remove-data-source

데이터소스를 도메인으로부터 동적으로 삭제한다.

  • alias

    rmds

  • 사용법

    remove-data-source [-id,--dataSourceID <data-source-id>]
                       [-f,--forceLock]
                       [-detail]
  • 파라미터

    파라미터 설명

    [-id,--dataSourceID <data-source-id>]

    데이터소스 ID를 설정한다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    변경 결과에 대한 상세한 정보가 출력된다.

  • 예제

    [MASTER]domain1.adminServer>remove-data-source -id ds1
    Successfully performed the REMOVE operation for data source [ds1] from the domain.
    Check the results using "remove-data-source"

1.9. test-data-source-config

데이터소스의 설정이 올바른지 확인한다.

  • alias

    testdsconf, testdsconfig, testdscfg

  • 사용법

    test-data-source-config -id <data-source-id>
                            [-all]
  • 파라미터

    파라미터 설명

    -id <data-source-id>

    데이터소스 ID이다.

    [-all]

    JEUS Master Server의 jeusadmin에서만 사용 가능하며, 도메인 내의 기동 중인 모든 서버들 중 해당 데이터소스를 타겟으로 설정한 서버에게 명령을 요청하고 결과를 수집하여 보여준다.

  • 예제

    [MASTER]domain1.adminServer>test-data-source-config -id ds1
    The data source [ds1] is properly configured and can be used.