Liberty: アプリケーション定義のデータ・ソース

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 の 2 つがあります。 アプリケーション定義のデータ・ソースは、接続マネージャーおよび JDBC ドライバーを暗黙的に定義するため、これらを指定することはできません。 アプリケーション定義のデータ・ソースを 2 フェーズ・コミットに使用する場合は、recoveryAuthDataRef プロパティーを指定して、トランザクション・リカバリーに使用される認証データを選択することができます。ただし、トランザクションのリカバリーはアプリケーションの実行中にのみ可能であることをよく認識してください。 アプリケーション定義のデータ・ソースでは、変数、エンコードしたパスワード、および期間構文を使用できます。
注: loginTimeoutmaxIdleTime など、アノテーションで明示的に定義されたプロパティーに期間構文は適用されません。

以下は、 接続マネージャー・プロパティー、変数、エンコードしたパスワード、および期間構文を使用した 2 つのデータ・ソースの例です。

@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"
        )
})

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_ds_appdefined
ファイル名: rwlp_ds_appdefined.html