第16章 Java Connector Architecture (JCA) の管理

16.1. Java Connector Architecture (JCA)

Java EE Connector Architecture (JCA) は外部にある異種のエンタープライズ情報システム (EIS) に対して Java EE システムの標準アーキテクチャーを定義します。EIS の例として、 エンタープライズリソースプランニング (ERP) システム、メインフレームトランザクション処理 (TP)、データベース、メッセージングシステムなどが挙げられます。リソースアダプターは Java EE Connector API アーキテクチャーを実装するコンポーネントです。

データソースオブジェクトと似ていますが、JCA 1.7 は以下を管理する機能を提供します。

  • connections
  • transactions
  • security
  • life-cycle
  • work instances
  • transaction inflow
  • message inflow

JCA 1.7 は Java Community Process で JSR-322 として開発されました。

16.2. リソースアダプター

リソースアダプターは、 Java Connector Architecture (JCA) 仕様を使用して Java EE アプリケーションとエンタープライズ情報システム (EIS) との間の通信を提供するデプロイ可能な Java EE コンポーネントです。EIS ベンダーの製品と Java EE アプリケーションの統合を容易にするため、リソースアダプターは通常 EIS ベンダーによって提供されます。

エンタープライズ情報システムは、組織内における他のあらゆるソフトウェアシステムのことです。例としては、エンタープライズリソースプランニング (ERP) システム、データベースシステム、電子メールサーバー、商用メッセージングシステムなどが挙げられます。

リソースアダプターは、JBoss EAP にデプロイできる Resource Adapter Archive (RAR) ファイルでパッケージ化されます。また、RAR ファイルは、Enterprise Archive (EAR) デプロイメントにも含めることができます。

16.3. JCA サブシステムの設定

jca サブシステムは、JCA コンテナーおよびリソースアダプターデプロイメントの一般的な設定を制御します。管理コンソールまたは管理 CLI を使用して jca サブシステムを設定できます。

設定する主な JCA 要素は次のとおりです。

管理コンソールでの JCA の設定

管理コンソールで jca サブシステムを設定するには、ConfigurationSubsystemsJCA と選択し、適切なタブを選択します。

  • Common Config タブ - キャッシュ接続マネージャー、アーカイブバリデーション、および Bean バリデーションの設定が含まれます。これらの項目は独自のタブに含まれます。設定を変更するには、タブを開き、Edit ボタンをクリックします。
  • Bootstrap Contexts タブ - 設定されたブートストラップコンテキストのリストが含まれます。新しいブートストラップコンテキストオブジェクトを追加、削除、および設定できます。各ブートストラップコンテキストをワークマネージャーに割り当てる必要があります。
  • Work Managerタブ - 設定されたワークマネージャーのリストが含まれます。新しいワークマネージャーを追加および削除でき、スレッドプールをここで設定できます。各ワークマネージャーは短時間実行されるスレッドプールを 1 つ持つことができ、任意で長時間実行されるスレッドプールを 1 つ持つことができます。

    スレッドプール属性を設定するには、選択したワークマネージャーの View をクリックします。

管理 CLI での JCA の設定
/subsystem=jca アドレスから管理 CLI で jca サブシステムを設定できます。管理対象ドメインでは、コマンドの前に /profile=PROFILE_NAME を追加する必要があります。

アーカイブバリデーション

デプロイメントユニットでアーカイブバリデーションを実行するかどうかを決定します。以下の表はアーカイブバリデーションに設定できる属性を表しています。

表16.1 アーカイブバリデーション属性

属性デフォルト値説明

enabled

true

アーカイブバリデーションが有効であるかどうかを指定します。

fail-on-error

true

アーカイブバリデーションのエラーレポートによってデプロイメントが失敗するかどうかを指定します

fail-on-warn

false

アーカイブバリデーションの警告レポートによってデプロイメントが失敗するかどうかを指定します。

アーカイブバリデーションが有効な状態で、アーカイブが JCA 仕様を正しく実装しない場合、デプロイメント中に問題を説明するエラーメッセージが表示されます。例は次のとおりです。

Severity: ERROR
Section: 19.4.2
Description: A ResourceAdapter must implement a "public int hashCode()" method.
Code: com.mycompany.myproject.ResourceAdapterImpl

Severity: ERROR
Section: 19.4.2
Description: A ResourceAdapter must implement a "public boolean equals(Object)" method.
Code: com.mycompany.myproject.ResourceAdapterImpl

アーカイブバリデーションが指定されていない場合は、アーカイブバリデーションが指定されているとみなされ、enabled 属性のデフォルトが true に設定されます。

Bean バリデーション

この設定は、Bean バリデーション(JSR-303) がデプロイメントユニットで実行されるかどうかを決定します。以下の表は Bean バリデーションに設定できる属性について表していまう。

表16.2 Bean バリデーションの属性

属性デフォルト値説明

enabled

true

Bean バリデーションが有効であるかどうかを指定します。

Bean バリデーションが指定されていない場合は、Bean バリデーションが指定されているとみなされ、enabled 属性のデフォルトが true に設定されます。

ワークマネージャー

ワークマネージャーには次の 2 種類があります。

デフォルトワークマネージャー
デフォルトのワークマネージャーおよびそのスレッドプール。
カスタムワークマネージャー
カスタムワークマネージャーの定義およびそのスレッドプール。

ワークマネージャーに設定できる属性は下表のとおりです。

表16.3 ワークマネージャーの属性

属性説明

name

ワークマネージャーの名前を指定します。

short-running-threads

標準の Work インスタンスのスレッドプール。ワークマネージャーごとに短時間実行されるスレッドプールが 1 つあります。

long-running-threads

LONG_RUNNING ヒントを設定する JCA 1.7 Work インスタンスのスレッドプール。各ワークマネージャーはオプションの長期スレッドプールを 1 つ持てます。

ワークマネージャーのスレッドプールに設定できる属性は下表のとおりです。

表16.4 スレッドプールの属性

属性デフォルト値説明

name

default

スレッドプールの名前を指定します。

keepalive-time

10 秒

ワーク実行後にスレッドプールが保持される期間を指定します。

allow-core-timeout

false

コアスレッドがタイムアウトするかどうかを決定するブール値の設定。デフォルト値は false です。

thread-factory

 

スレッドファクトリーへの参照。

max-thread

50

スレッドプールの最大サイズ。

core-threads

50

コアスレッドプールのサイズ。スレッドプールの最大サイズ以下である必要があります。

queue-length

50

キューの最大長。

ブートストラップコンテキスト

カスタムのブートストラップコンテキストを定義するために使用されます。以下の表は、ブートストラップコンテキストに設定できる属性を表しています。

表16.5 ブートストラップコンテキストの属性

属性説明

name

ブートストラップコンテキストの名前を指定します。

workmanager

このコンテキストに使用するワークマネージャーの名前を指定します。

キャッシュ接続マネージャー

トランザクションの接続における接続のデバッグおよび Lazy Enlistment のサポートに使用され、アプリケーションによって使用およびリリースされるかどうかを追跡します。以下の表はキャッシュ接続マネージャーに設定できる属性を表しています。

表16.6 キャッシュ接続マネージャーの属性

属性デフォルト値説明

debug

false

接続を明示的に閉じるため、障害時に警告を出力します。

error

false

接続を明示的に閉じるため、障害時に例外が発生します。

ignore-unknown-connections

false

未知の接続はキャッシュされないことを指定します。

16.4. リソースアダプターの設定

16.4.1. リソースアダプターのデプロイ

リソースアダプターは管理 CLI または管理コンソールを使用して他のデプロイメントと同様にデプロイできます。また、スタンドアロンサーバー実行時にアーカイブをデプロイメントディレクトリーにコピーして、デプロイメントスキャナーによって検出されるようにすることもできます。

管理 CLI を使用したリソースアダプターのデプロイ

リソースアダプターをスタンドアロンサーバーへデプロイするには、以下の管理 CLI コマンドを実行します。

deploy /path/to/resource-adapter.rar

リソースアダプターを管理対象ドメインのすべてのサーバーグループにデプロイするには、以下の管理 CLI コマンド を入力します。

deploy /path/to/resource-adapter.rar --all-server-groups
管理コンソールを使用したリソースアダプターのデプロイ
  1. 管理コンソールにログインし、Deployments タブをクリックします。
  2. 追加 をクリックします。管理対象ドメインの場合は、最初に Content Repository を選択する必要があります。
  3. 新規デプロイメントのアップロードオプションを選択し、次へ をクリックします。
  4. リソースアダプターアーカイブを閲覧し、次へ をクリックします。
  5. アップロードを確認してから 完了をクリックします。
  6. 管理対象ドメインでは、デプロイメントを適切なサーバーグループに割り当て、デプロイメントを有効にします。
デプロイメントスキャナーを使用したリソースアダプターのデプロイ

リソースアダプターを手作業でスタンドアロンサーバーにデプロイするには、リソースアダプターアーカイブをサーバーデプロイメントディレクトリー (例: EAP_HOME/standalone/deployments/) にコピーします。これにより、デプロイメントスキャナーによって検出され、デプロイされます。

注記

このオプションは管理対象ドメインでは使用できません。管理コンソールまたは管理 CLI を使用してリソースアダプターをサーバーグループにデプロイする必要があります。

16.4.2. リソースアダプターの設定

管理インターフェースを使用してリソースアダプターを設定できます。以下の例は、管理 CLI を使用してリソースアダプターを設定する方法を示しています。サポートされるプロパティーやその他の重要な情報は、リソースアダプターベンダーのマニュアルを参照してください。

リソースアダプター設定の追加

リソースアダプター設定を追加します。

/subsystem=resource-adapters/resource-adapter=eis.rar:add(archive=eis.rar, transaction-support=XATransaction)
リソースアダプターの設定

必要に応じて以下を設定します。

  • config-properties を設定します。

    server 設定プロパティーを追加します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=server:add(value=localhost)

    port 設定プロパティーを追加します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=port:add(value=9000)
  • admin-objects を設定します。

    管理オブジェクトを追加します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName:add(class-name=com.acme.eis.ra.EISAdminObjectImpl, jndi-name=java:/eis/AcmeAdminObject)

    管理オブジェクト設定プロパティーを設定します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName/config-properties=threshold:add(value=10)
  • connection-definitions を設定します。

    管理接続ファクトリーの接続定義を追加します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName:add(class-name=com.acme.eis.ra.EISManagedConnectionFactory, jndi-name=java:/eis/AcmeConnectionFactory)

    管理接続ファクトリーの設定プロパティーを設定します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName/config-properties=name:add(value=Acme Inc)

    エンリストメントトレースを記録するかどうかを設定します。エンリストメントトレースの記録を無効にするには、enlistment-trace 属性を false に設定します。

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName:write-attribute(name=enlistment-trace,value=false)
    警告

    エンリストメントトレースを無効にすると、トランザクションエンリストメント中にエラーを追跡するのが難しくなります。

リソースアダプターの利用可能なすべてのオプションについては、リソースアダプターの属性 を参照してください。

リソースアダプターのアクティベート

リソースアダプターをアクティベートします。

/subsystem=resource-adapters/resource-adapter=eis.rar:activate
注記

リソースアダプターのキャパシティーポリシーを定義することも可能です。詳細は キャパシティーポリシーの項を参照してください。

16.4.3. WebSphere MQ リソースアダプターのデプロイおよび設定

Websphere MQ リソースアダプターのデプロイ手順については、JBoss EAP Configuring Messaging Deploying a Websphere MQ Resource Adapter を参照してください。

16.4.4. 汎用 JMS リソースアダプターのデプロイおよび設定

汎用 JMS リソースアダプターの設定方法については、JBoss EAP Configuring MessagingConfiguring a Generic JMS Resource Adapter を参照してください。

16.5. 管理接続プールの設定

JBoss EAP は ManagedConnectionPool インターフェースの 3 つの実装を提供します。

org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedQueueManagedConnectionPool
これは、JBoss EAP 7 のデフォルトの接続プールで、追加設定がない場合のパフォーマンスが最も優れています。
org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool
過去の JBoss EAP バージョンではデフォルトの接続プールでした。
org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
この接続プールはデバッグの目的でのみ使用され、シャットダウンやプールのフラッシュ時にリークが報告されます。

以下の管理 CLI コマンドを使用して、データソースの管理接続プール実装を設定できます。

/subsystem=datasources/data-source=DATA_SOURCE:write-attribute(name=mcp,value=MCP_CLASS)

以下の管理 CLI コマンドを使用して、リソースアダプターの管理接続プール実装を設定できます。

/subsystem=resource-adapters/resource-adapter=RESOURCE_ADAPTER/connection-definitions=CONNECTION_DEFINITION:write-attribute(name=mcp,value=MCP_CLASS)

以下の管理 CLI コマンドを使用して、メッセージングサーバーの管理接続プール実装を設定できます。

/subsystem=messaging-activemq/server=SERVER/pooled-connection-factory=CONNECTION_FACTORY:write-attribute(name=managed-connection-pool,value=MCP_CLASS)

16.6. 接続統計の表示

/deployment=NAME.rar サブツリーから定義された接続の統計を読み取りできます。これは、standalone.xml または domain.xml 設定に定義されていなくても、すべての RAR の統計にアクセスできるようにするためです。

/deployment=NAME.rar/subsystem=resource-adapters/statistics=statistics/connection-definitions=java\:\/testMe:read-resource(include-runtime=true)
注記

統計はすべてランタイムのみの情報であるため、必ず include-runtime=true 引数を指定してください。

利用できる統計については、 リソースアダプターの統計を参照してください。