@TargetSE(valueSE=TYPESE) @RetentionSE(valueSE=RUNTIMESE) @RepeatableSE(valueSE=DataSourceDefinitions.class) public @interface DataSourceDefinition
DataSource
を定義するために使用されるアノテーション。DataSource
は、一般的に使用される DataSource
プロパティのアノテーション要素を設定することで構成できます。properties
要素を使用して、追加の標準およびベンダー固有のプロパティを指定できます。 データソースは、name
要素で指定された名前で登録されます。これは、他のコンポーネントからのデータソースへのアクセス可能性を決定する、任意の有効な Jakarta EE 名前空間にあるように定義できます。
適切な型の JDBC ドライバー実装クラス(DataSource
、ConnectionPoolDataSource
、XADataSource
)は、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!!!
上記の例では、databaseName
、user
、serverName
プロパティは、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 の構成時に次の値が使用されます。
ベンダーは、特定のデータソース型には通常適用されないプロパティをサポートする必要はありません。例: 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; ... }
DataSource
SE, XADataSource
SE, ConnectionPoolDataSource
SE修飾子と型 | 必須要素と説明 |
---|---|
StringSE | className javax.sql.DataSource または javax.sql.XADataSource または javax.sql.ConnectionPoolDataSource を実装する DataSource クラスの名前。 |
StringSE | name データソースの登録に使用する JNDI 名。 |
修飾子と型 | オプションの要素と説明 |
---|---|
StringSE | databaseName サーバー上のデータベースの名前。 |
StringSE | description このデータソースの説明 |
int | initialPoolSize 接続プールの初期化時に作成する必要がある接続の数。 |
int | isolationLevel 接続の分離レベル。 |
int | loginTimeout データベースへの接続試行中にこのデータソースが待機する最大時間を秒単位で設定します。 |
int | maxIdleTime 接続が接続プールに対して閉じられるまでに、物理接続がプール内で未使用のままでいる必要がある秒数。 |
int | maxPoolSize 接続プールに同時に割り当てられる接続の最大数。 |
int | maxStatements 接続プールを開いたままにしておくべきステートメントの総数。 |
int | minPoolSize 接続プールに割り当てる必要がある接続の最小数。 |
StringSE | password 接続認証に使用するパスワード。 |
int | portNumber サーバーがリクエストをリスニングするポート番号。 |
StringSE[] | properties ベンダー固有のプロパティを指定するために使用され、以下のようなあまり使用されない DataSource プロパティ: |
StringSE | serverName データベースサーバー名。 |
boolean | transactional 接続がトランザクションに参加しない場合は、 false に設定します。 |
StringSE | url JDBC URL。 |
StringSE | user 接続認証に使用するユーザー名。 |
public abstract StringSE name
public abstract StringSE className
javax.sql.DataSource
または javax.sql.XADataSource
または javax.sql.ConnectionPoolDataSource
を実装する DataSource クラスの名前。public abstract StringSE description
public abstract StringSE url
url
アノテーション要素に対応するアノテーション要素を使用して指定された DataSource プロパティが含まれている場合、優先順位は定義されておらず、実装固有です。public abstract StringSE user
public abstract StringSE password
public abstract StringSE databaseName
public abstract StringSE serverName
public abstract int isolationLevel
デフォルトはベンダー固有です。
public abstract boolean transactional
false
に設定します。デフォルトでは、トランザクションがアクティブまたはアクティブになったときにトランザクションに参加します。
public abstract int initialPoolSize
デフォルトはベンダー固有です
public abstract int maxIdleTime
デフォルトはベンダー固有です
public abstract int maxStatements
デフォルトはベンダー固有です
public abstract StringSE[] properties
DataSource
プロパティ:プロパティは、propertyName = propertyValue の形式を使用して指定され、配列要素ごとに 1 つのプロパティがあります。
DataSource プロパティが properties
要素で指定され、プロパティのアノテーション要素も指定されている場合、アノテーション要素の値が優先されます。
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.