パッケージ jakarta.annotation.sql

アノテーション型 DataSourceDefinition


  • @TargetSE(TYPESE)
    @RetentionSE(RUNTIMESE)
    @RepeatableSE(DataSourceDefinitions.class)
    public @interface DataSourceDefinition
    JNDI に登録されるコンテナー DataSource を定義するために使用されるアノテーション。DataSource は、一般的に使用される DataSource プロパティのアノテーション要素を設定することで構成できます。properties 要素を使用して、追加の標準およびベンダー固有のプロパティを指定できます。

    データソースは、name 要素で指定された名前で登録されます。これは、他のコンポーネントからのデータソースへのアクセス可能性を決定する、任意の有効な Jakarta EE 名前空間にあるように定義できます。

    適切な型の JDBC ドライバー実装クラス(DataSourceConnectionPoolDataSourceXADataSource)は、className 要素で示される必要があります。ドライバークラスの可用性は、実行時に想定されます。

    DataSource プロパティは複数回指定しないでください。url アノテーション要素に、対応するアノテーション要素を使用して指定された、またはプロパティアノテーション要素で指定された DataSource プロパティが含まれている場合、優先順位は未定義で実装固有です。

       @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
          className="org.apache.derby.jdbc.ClientDataSource",
          url="jdbc:derby://localhost:1527/myDB;user=bill",
          user="lance",
          password="secret",
          databaseName="testDB",
          serverName="luckydog"
       )// DO NOT DO THIS!!!
     

    上記の例では、databaseNameuserserverName プロパティは、url プロパティの一部として、対応するアノテーション要素を使用して指定されています。これは避けるべきです。

    properties アノテーション要素が使用され、対応するアノテーション要素を使用して指定された DataSource プロパティが含まれている場合、アノテーション要素の値が優先されます。例:

       @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
          className="org.apache.derby.jdbc.ClientDataSource",
          user="lance",
          password="secret",
          databaseName="testDB",
          serverName="luckydog",
           properties= {"databaseName=myDB", "databaseProp=doThis"}
       )// DO NOT DO THIS!!!
     

    これにより、DataSource の構成時に次の値が使用されます。

    • serverName = luckydog
    • portNumber = 1527
    • databaseName = testDB
    • user = lance
    • password = secret
    • databaseProp = doThis

    ベンダーは、特定のデータソース型には通常適用されないプロパティをサポートする必要はありません。例: transactional プロパティを true に指定するが、XADataSource 以外のデータソースクラスを実装する className に値を提供することはサポートされない場合があります。

    ベンダー固有のプロパティは、このアノテーションを使用して定義された標準のデータソースプロパティと組み合わせるか、オーバーライドするために使用できます。

    指定された構成でサポートされていない、またはベンダー固有の構成プロパティにマップできない DataSource プロパティは無視される場合があります。

    例:

       @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
          className="com.foobar.MyDataSource",
          portNumber=6689,
          serverName="myserver.com",
          user="lance",
          password="secret"
       )
    
     

    URL の使用:

      @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
        className="org.apache.derby.jdbc.ClientDataSource",
        url="jdbc:derby://localhost:1527/myDB",
        user="lance",
        password="secret"
     )
     

    Jakarta Enterprise Beans からの DataSource のルックアップの例:

     @Stateless
     public class MyStatelessEJB {
       @Resource(lookup="java:global/MyApp/myDataSource")
        DataSource myDB;
          ...
     }
     

    導入:
    共通のアノテーション 1.1
    関連事項:
    DataSourceSE, XADataSourceSE, ConnectionPoolDataSourceSE
    • 必須定数のサマリー

      必須要素  
      修飾子と型 必須要素 説明
      StringSEclassName
      javax.sql.DataSource または javax.sql.XADataSource または javax.sql.ConnectionPoolDataSource を実装する DataSource クラスの名前。
      StringSEname
      データソースの登録に使用する JNDI 名。
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      StringSEdatabaseName
      サーバー上のデータベースの名前。
      StringSEdescription
      このデータソースの説明
      intinitialPoolSize
      接続プールの初期化時に作成する必要がある接続の数。
      intisolationLevel
      接続の分離レベル。
      intloginTimeout
      データベースへの接続試行中にこのデータソースが待機する最大時間を秒単位で設定します。
      intmaxIdleTime
      接続が接続プールに対して閉じられるまでに、物理接続がプール内で未使用のままでいる必要がある秒数。
      intmaxPoolSize
      接続プールに同時に割り当てられる接続の最大数。
      intmaxStatements
      接続プールを開いたままにしておくべきステートメントの総数。
      intminPoolSize
      接続プールに割り当てる必要がある接続の最小数。
      StringSEpassword
      接続認証に使用するパスワード。
      intportNumber
      サーバーがリクエストをリスニングするポート番号。
      StringSE[]properties
      ベンダー固有のプロパティを指定するために使用され、以下のようなあまり使用されない DataSource プロパティ:
      StringSEserverName
      データベースサーバー名。
      booleantransactional
      接続がトランザクションに参加しない場合は、false に設定します。
      StringSEurl
      JDBC URL。
      StringSEuser
      接続認証に使用するユーザー名。
    • 要素の詳細

      • name

        StringSE name
        データソースの登録に使用する JNDI 名。
        導入:
        1.1
      • className

        StringSE className
        javax.sql.DataSource または javax.sql.XADataSource または javax.sql.ConnectionPoolDataSource を実装する DataSource クラスの名前。
        導入:
        1.1
      • description

        StringSE description
        このデータソースの説明
        導入:
        1.1
        デフォルト:
        ""
      • url

        StringSE url
        JDBCURL。url アノテーション要素に対応するアノテーション要素を使用して指定された DataSource プロパティが含まれている場合、優先順位は定義されておらず、実装固有です。
        導入:
        1.1
        デフォルト:
        ""
      • user

        StringSE user
        接続認証に使用するユーザー名。
        導入:
        1.1
        デフォルト:
        ""
      • password

        StringSE password
        接続認証に使用するパスワード。
        導入:
        1.1
        デフォルト:
        ""
      • databaseName

        StringSE databaseName
        サーバー上のデータベースの名前。
        導入:
        1.1
        デフォルト:
        ""
      • portNumber

        int portNumber
        サーバーがリクエストをリスニングするポート番号。
        導入:
        1.1
        デフォルト:
        -1
      • serverName

        StringSE serverName
        データベースサーバー名。
        導入:
        1.1
        デフォルト:
        "localhost"
      • isolationLevel

        int isolationLevel
        接続の分離レベル。分離レベルは、次のいずれかである必要があります。

        • Connection.TRANSACTION_NONE
        • Connection.TRANSACTION_READ_ UNCOMMITTED
        • Connection.TRANSACTION_READ_COMMITTED
        • Connection.TRANSACTION_REPEATABLE_READ
        • Connection.TRANSACTION_SERIALIZABLE

        デフォルトはベンダー固有です。

        導入:
        1.1
        デフォルト:
        -1
      • transactional

        boolean transactional
        接続がトランザクションに参加しない場合は、false に設定します。

        デフォルトでは、トランザクションがアクティブまたはアクティブになったときにトランザクションに参加します。

        導入:
        1.1
        デフォルト:
        true
      • initialPoolSize

        int initialPoolSize
        接続プールの初期化時に作成する必要がある接続の数。

        デフォルトはベンダー固有です

        導入:
        1.1
        デフォルト:
        -1
      • maxPoolSize

        int maxPoolSize
        接続プールに同時に割り当てられる接続の最大数。

        デフォルトはベンダー固有です。

        導入:
        1.1
        デフォルト:
        -1
      • minPoolSize

        int minPoolSize
        接続プールに割り当てる必要がある接続の最小数。

        デフォルトはベンダー固有です。

        導入:
        1.1
        デフォルト:
        -1
      • maxIdleTime

        int maxIdleTime
        接続が接続プールに対して閉じられるまでに、物理接続がプール内で未使用のままでいる必要がある秒数。

        デフォルトはベンダー固有です

        導入:
        1.1
        デフォルト:
        -1
      • maxStatements

        int maxStatements
        接続プールが開いたままにしておく必要のあるステートメントの総数。値 0 は、接続プールに対してステートメントのキャッシュが無効になっていることを示します。

        デフォルトはベンダー固有です

        導入:
        1.1
        デフォルト:
        -1
      • properties

        StringSE[] properties
        ベンダー固有のプロパティを指定するために使用され、以下のようなあまり使用されない DataSource プロパティ:

        • dataSourceName
        • networkProtocol
        • propertyCycle
        • roleName

        プロパティは、propertyName = propertyValue の形式を使用して指定され、配列要素ごとに 1 つのプロパティがあります。

        DataSource プロパティが properties 要素で指定され、プロパティのアノテーション要素も指定されている場合、アノテーション要素の値が優先されます。

        導入:
        1.1
        デフォルト:
        {}
      • loginTimeout

        int loginTimeout
        このデータソースがデータベースへの接続を試行しているときに待機する最大時間を秒単位で設定します。ゼロの値は、タイムアウトが存在する場合、タイムアウトがデフォルトのシステムタイムアウトであることを指定します。それ以外の場合は、タイムアウトがないことを指定します。

        デフォルトはベンダー固有です。

        導入:
        1.1
        デフォルト:
        0