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

WebLogicリソース・アダプタを開発およびデプロイする際には、Oracleのベスト・プラクティスを検討してください。

リソース・アダプタのクラスローディングの最適化

RARファイルにパッケージ化するためにリソース・アダプタ・クラスを準備する際には、クラスローディングの最適化に関するOracleのベスト・プラクティスを検討してください。

リソース・アダプタ・クラスを1つまたは複数のJARファイルにパッケージ化してから、そのJARファイルをRARファイル内に配置することができます。これをネストされたJARと呼びます。JARファイルをRARファイル内にネストしていて、クラスがクラスローダーによってロードされる必要がある場合、RARファイル内のJARは、ロードする必要のある各クラスごとに、開いて閉じて繰返し処理されることになります。

RARファイル内のJARの数が少なく、JARのサイズが比較的小さい場合は、パフォーマンスに大きな影響は与えません。一方、多数のJARがあり、JARのサイズが大きい場合は、パフォーマンスへの影響が大きくなります。

そのようなパフォーマンスの問題を避けるには、次のいずれかを行います。

  1. リソース・アダプタを展開形式でデプロイします。この場合、JARのネストは不要になるため、クラスの検索に関わるパフォーマンスの影響は小さくなります。

  2. リソース・アダプタを展開形式でデプロイできない場合は、RARファイルの内部でJARを展開できます。この場合もJARのネストは不要になるため、クラスローディングのパフォーマンスが大幅に向上します。

接続の最適化

リソース・アダプタで、『Java EE Connector Architecture 1.6』仕様書の7.16.1および7.16.2項で述べられているオプションの機能を実装することをお薦めします。これらの機能を実装すると、WebLogic Serverでは、通常は利用できない機能を提供できます。

怠惰な接続の関連付けの最適化(7.16.1項に記載)を利用すると、サーバーは未使用の接続を自動的にクリーン・アップして、アプリケーションによるリソースの占有を防ぐことができます。怠惰なトランザクション登録の最適化(7.16.2項に記載)を利用すると、アプリケーションは、接続がすでに開かれた後で、トランザクションを開始できます。

スレッド管理

リソース・アダプタの実装でWorkManagerを使用して、新しいスレッドで実行する必要のある処理を、新しいスレッドを直接作成しないで起動するようにしてください。WebLogic Serverはこれらのスレッドの管理やモニターを行えるようになります。詳細は、『JSR 322: Java EE Connector Architecture 1.6』の第10章「Work Management」を参照してください。

InteractionSpecインタフェース

EISのアクセスのために、WebLogic Serverでは、アプリケーション・コンポーネント用の標準クライアントAPIを定義するCommon Client Interface (CCI)をサポートしています。アプリケーション・コンポーネントおよびEAIフレームワークは、CCIを使用することにより、異種EIS間の対話を制御できます。詳細は、『JSR 322: Java EE Connector Architecture 1.6』の第17章「Common Client Interface」を参照してください。

ベスト・プラクティスとしては、CCIリソース・アダプタをRARファイル内に実装しなければならないInteractionSpecクラスは格納しないでください。代わりに、RARファイルの外部にある別のJARファイルにパッケージ化してください。そうすると、一般的なCLASSPATHにInteractionSpecインタフェース・クラスを入れないでも、クライアントがアクセスできるようになります。

InteractionSpecインタフェースについては、すべてのアプリケーション・コンポーネント(EJB、リソース・アダプタ、Webアプリケーション)がEARファイルにパッケージ化されている場合、すべての共通クラスをAPP-INF/libディレクトリに配置できることに留意してください。これが最も簡単なシナリオです。

このことは、スタンドアロンのリソース・アダプタ(RARファイルにパッケージ化)には当てはまりません。(InteractionSpecと同様に)インタフェースがシリアライズ可能である場合、クライアントとリソース・アダプタの両方が、実装クラスだけでなくInteractionSpecインタフェースにアクセスする必要があります。ただし、インタフェースがjava.io.Remoteを拡張している場合、クライアントがアクセスする必要があるのはインタフェース・クラスのみです。

javax.jms.ConnectionFactoryの使用

EJBまたはサーブレットを使用して、XAトランザクションを使用してJMSプロバイダを支援するJCAアダプタを使用するメッセージを送信する際、resource-refjava.lang.objectである必要があります。

WebLogic Server環境で、javax.jms.ConnectionFactoryを指定すると、このJCAアダプタ構成と互換性がないWebLogic JMSラッパーが実装されます。『Oracle WebLogic Server JMSアプリケーションの開発』EJBやサーブレットと組み合せたWebLogic JMSの使用に対する拡張サポートに関する項を参照してください。