애플리케이션 정의 데이터 소스

Java™ EE 스펙에서 정의한 대로 어노테이션 또는 배치 디스크립터를 통해 애플리케이션 내에 데이터 소스를 정의할 수 있습니다.

참고: commonLibraryRef 클래스 로더 속성은 애플리케이션 정의 데이터 소스에 대해 권장됩니다. privateLibraryRef 속성은 java:global 네임스페이스에 사용할 수 없으며 다른 범위에 사용하지 못합니다. 여러 애플리케이션이 데이터 소스를 지정하기 위해 동일한 java:global 네임스페이스를 선언하는 경우, 애플리케이션의 server.xml 파일은 모두 동일한 공유 라이브러리에 commonLibraryRef 속성을 지정해야 합니다.

데이터 소스를 애플리케이션에서 정의하는 경우, JDBC 드라이버는 애플리케이션에 사용 가능하도록 작성해야 합니다. 이 정의는 애플리케이션의 server.xml에서 공유 라이브러리를 구성하여 완성됩니다.

예:

 <application id="myApp" name="myApp" location="myApp.war" type="war">
      <classloader commonLibraryRef="DB2Lib"/>
    </application>
 
    <library id="DB2Lib">
      <fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
    </library>

그런 다음, 어노테이션 또는 배치 디스크립터를 통해 애플리케이션에서 데이터 소스를 정의할 수 있습니다.

  • 다음 예제처럼 어노테이션을 사용하십시오.
    @DataSourceDefinition(
            name         = "java:comp/env/jdbc/db2",
            className    = "com.ibm.db2.jcc.DB2DataSource",
            databaseName = "SAMPLEDB",
            serverName   = "localhost",
            portNumber   = 50000,
            properties   = { "driverType=4" },
            user         = "user1",
            password     = "pwd1"
            )
    
    public class MyServlet extends HttpServlet {
    
        @Resource(lookup="java:comp/env/jdbc/db2")
        DataSource ds;
  • 예를 들어, web.xml 파일의 경우 다음 예제처럼 배치 디스크립터를 사용하십시오.
    <data-source>
        <name>java:comp/env/jdbc/db2</name>
        <class-name>com.ibm.db2.jcc.DB2DataSource</class-name>
        <server-name>localhost</server-name>
        <port-number>50000</port-number>
        <database-name>SAMPLEDB</database-name>
        <user>user1</user>
        <password>pwd1</password>
        <property><name>driverType</name><value>4</value></property>
      </data-source>
일반적으로, server.xml 파일의 dataSource 또는 connectionManager에서 정의될 수 있는 특성은 애플리케이션 정의 데이터 소스에서 지정될 수도 있습니다. 이에 대한 두 가지 예외는 connectionManagerRefjdbcDriverRef이며, 애플리케이션 정의 데이터 소스가 암시적으로 연결 관리자 및 JDBC 드라이버를 정의하기 때문에 이를 지정할 수 없습니다. 2단계 커미트에 대해 애플리케이션 정의 데이터 소스를 사용하는 경우, recoveryAuthDataRef 특성을 지정하여 트랜잭션 복구에 사용되는 인증 데이터를 선택할 수 있습니다. 그러나, 트랜잭션 복구가 애플리케이션이 실행 중인 경우에만 가능하다는 것을 아는 것이 중요합니다. 변수, 인코드된 비밀번호, 지속 기간 구문을 애플리케이션 정의 데이터 소스에서 사용할 수 있습니다.
참고: 지속 기간 구문은 loginTimeout 또는 maxIdleTime과 같은 어노테이션에 명시적으로 정의된 특성에 적용되지 않습니다.

다음은 연결 관리자 특성, 변수, 인코드된 비밀번호, 지속기간 구문을 사용한 두 데이터 소스의 예제입니다.

@DataSourceDefinitions(value = {
    @DataSourceDefinition(
        name         = "java:comp/env/jdbc/derby",
        className    = "org.apache.derby.jdbc.EmbeddedDataSource40",
        databaseName = "${shared.resource.dir}/data/SAMPLEDB",
        minPoolSize  = 1,
        maxPoolSize  = 10,
        maxIdleTime = 180,
        properties = { "agedTimeout=10m", "connectionTimeout=30s", "createDatabase=create" }
        ),
    @DataSourceDefinition(
        name         = "java:comp/env/jdbc/oracle",
        className    = "oracle.jdbc.pool.OracleDataSource",
        url          = "jdbc:oracle:thin:@//localhost:1521/SAMPLEDB",
        user         = "user1",
        password     = "{xor}Oz0vKDtt"
        )
})

주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_ds_appdefined.html