アプリケーションのデータ・ソース・リソース定義
アプリケーションは、アノテーションまたはデプロイメント記述子にデータ・ソースを定義することができます。このトピックでは、サーバー、ノード、クラスター、またはセルのレベルで定義される WebSphere® Application Server データ・ソースの類似性および互換性について説明します。データ・ソース定義のオプションの機能についても説明します。
データ・ソース定義の標準プロパティー
アノテーション・エレメント | 記述子エレメント | コメント |
---|---|---|
name | name | データ・ソースの JNDI 名。java:global、java:app、java:module、または java:comp 名前空間のいずれかの名前に指定する必要があります。 |
className | class-name | javax.sql.XADataSource、javax.sql.ConnectionPoolDataSource、または javax.sql.DataSource を実装する JDBC ドライバーの完全修飾クラス名。 |
databaseName | database-name | 値は JDBC ドライバーに対して指定されます。 |
description | description | 値は DataSource MBean に対して指定されます。 |
initialPoolSize | initial-pool-size | プロパティーの値は無視されます。WebSphere Application Server では、初期プール・サイズは常に 0 です。 |
isolationLevel | isolation-level | WebSphere Application Server データ・ソース・カスタム・プロパティー webSphereDefaultIsolationLevel に相当。これは、新規接続におけるデフォルトのトランザクション分離レベルです。 |
loginTimeout | login-timeout | 値は JDBC ドライバーに対して指定されます。 |
maxIdleTime | max-idle-time | WebSphere Application Server 接続プール・プロパティー unusedTimeout に相当。このプロパティーは、接続プールが提供されていないクライアント・コンテナーでは無視されます。 |
maxPoolSize | max-pool-size | WebSphere Application Server 接続プール・プロパティー maxConnections に相当。このプロパティーは、接続プールが提供されていないクライアント・コンテナーでは無視されます。 |
maxStatements | max-statements | 接続プールのステートメントの最大数を定義します。 WebSphere Application Server では、各プール接続には独自のステートメント・キャッシュがあります。従って、maxStatements はプールの maxPoolSize 間で (等分に、端数を切り捨てて) 分割されます。maxPoolSize が無制限である場合、ステートメントのプーリングは無効になります。 |
minPoolSize | min-pool-size | WebSphere Application Server 接続プール・プロパティー minConnections に相当。このプロパティーは、接続プールが提供されていないクライアント・コンテナーでは無視されます。 |
password | password | パスワードを指定しない接続要求のデフォルト・パスワード。ユーザー名およびパスワードをアプリケーションにハードコーディングするのではなく、認証別名を使用することを検討してください。 |
portNumber | port-number | 値は JDBC ドライバーに対して指定されます。 |
serverName | server-name | 値は JDBC ドライバーに対して指定されます。 |
transactional | transactional | WebSphere Application Server では、プロパティー transactional は、接続が JTA トランザクションで確保されるかどうかを制御します。transactional=false の場合、接続は JTA トランザクションには確保されませんが、autocommit=true、または autocommit=false を指定した connection.commit/rollback を使用することで、データベースに対してトランザクションを実行できます。WebSphere Application Server データ・ソース・カスタム・プロパティー nonTransactionalDataSource の逆に相当。 |
url | url | 値は JDBC ドライバーに対して指定されます。URL が指定されている場合、databaseName、serverName、portNumber の値は無視されます。 |
user | user | ユーザー名を指定しない接続要求のデフォルト・ユーザー名。ユーザー名およびパスワードをアプリケーションにハードコーディングするのではなく、認証別名を使用することを検討してください。 |
ベンダー・プロパティーとカスタム・プロパティー
JDBC ドライバーのベンダー・プロパティーは、データ・ソース定義に含めることができます。WebSphere Application Server のカスタム・プロパティーの多くも、同様にデータ・ソース定義に含めることができます。
@DataSourceDefinition
(
name="java:app/env/myDataSource",
className="org.apache.derby.jdbc.EmbeddedXADataSource40",
databaseName="myDB",
properties=
{
// Vendor properties for Derby Embedded JDBC driver:
"createDatabase=create",
"connectionAttributes=upgrade=true",
// Custom properties for WebSphere Application Server:
"connectionTimeout=60",
"dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper",
"validateNewConnection=true",
"validateNewConnectionRetryCount=5"
},
serverName=""
)
以下の例は、データ・ソース定義をデプロイメント記述子に含める方法を示しています。<data-source>
<name>java:app/env/myDataSource</name>
<class-name>org.apache.derby.jdbc.EmbeddedXADataSource40</class-name>
<database-name>myDB</database-name>
<property><name>createDatabase</name><value>create</value></property>
<property><name>connectionAttributes</name><value>upgrade=true</value></property>
<property><name>connectionTimeout</name><value>60</value></property>
<property><name>dataStoreHelperClass</name><value>com.ibm.websphere.rsadapter.DerbyDataStoreHelper</value></property>
<property><name>validateNewConnection</name><value>true</value></property>
<property><name>validateNewConnectionRetryCount</name><value>5</value></property>
<server-name/>
</data-source>
以下は、ここに示す方法で構成できる WebSphere Application
Server カスタム・プロパティーのリストです。- 接続プール・プロパティー
- agedTimeout
- authDataAlias
- authMechanismPreference
- connectionTimeout
- defaultConnectionTypeOverride
- globalConnectionTypeOverride
- mappingConfigAlias
- purgePolicy
- reapTime
- stuckThreshold
- stuckTime
- stuckTimerTime
- surgeCreationInterval
- surgeThreshold
- testConnection
- testConnectionInterval
- XA_RECOVERY_AUTH_ALIAS
- データ・ソース・カスタム・プロパティー
- beginTranForResultSetScrollingAPIs
- beginTranForVendorAPIs
- connectionSharing
- enableMultithreadedAccessDetection
- errorDetectionModel
- freeResourcesOnClose
- oracleRACXARecoveryDelay (Oracle のみ)
- preTestSQLString
- userDefinedErrorMap
- validateNewConnection
- validateNewConnectionRetryCount
- validateNewConnectionRetryInterval
- validateNewConnectionTimeout
リソース参照
デプロイヤーが上書きしやすいように、アプリケーションを、データ・ソースにアクセスするときに常にリソース参照を使用するように構成することをお勧めします。
接続の共有
デフォルトでは、データ・ソース定義について、接続要求は、最初に要求された設定 (connectionSharing=MatchOriginalRequest) と一致する場合、既存の使用中の接続を共有できます。または、接続要求と接続の現在の状態を一致させて (connectionSharing=MatchCurrentState) 接続を共有することもできます。
ライフサイクル
データ・ソース定義のライフサイクルは、これを定義するアプリケーションのライフサイクルと関連付けられています。従って、サーバーを再始動せずにデータ・ソース定義を変更するようにアプリケーションを更新できます。複数のアプリケーションに同じデータ・ソース定義が含まれている場合、例えば、2 つのデータ・ソース定義に同一の java:global 名、同一の構成済みプロパティー・セット、および同一のプロパティー値がある場合、全アプリケーションをアンインストールし、その後にデータ・ソース定義を更新してアプリケーションを再インストールする必要があります。
データ・ソース定義間の競合
アプリケーション、モジュール、およびコンポーネントでは、データ・ソースを別のアプリケーションと同じ java:global 名で定義しないように注意してください。そのような操作を行うとアプリケーションが共存できなくなるためです。アプリケーション内のモジュールおよびコンポーネントでは、データ・ソースを別のモジュールまたはコンポーネントと同じ java:app 名で定義しないように注意してください。競合のため、アプリケーションのインストールが失敗します。モジュール内では、コンポーネントで別のコンポーネントと同じ java:module 名を指定してデータ・ソースを定義しないように注意してください。競合のため、アプリケーションのインストールが失敗します。Web モジュール内では、コンポーネントで別のコンポーネントと同じ java:comp 名を指定してデータ・ソースを定義しないように注意してください。競合のため、アプリケーションのインストールが失敗します。