メディエーション・プログラミングのコーディングのヒント

メディエーション・コードを作成する場合に役立つプログラミングのヒント。

  • 転送ルーティング・パスでループが発生しないように注意してください。例えば、現行宛先と同じ宛先をパスに設定すると、 メッセージが無限に循環し、そのたびにルーティング・パスが現行の宛先にリセットされます。 メディエーション・フレームワークでは、ルーティング・パスのループはチェックされません。
  • 静的フィールドの使用はできる限り避けてください。 単一のメディエーションがデプロイされ、複数のメッセージが並行して処理される場合があります。
  • メッセージ・コンテキストまたはメッセージ内容から計算される値はキャッシュに入れないでください。これらの値はメッセージ間で変更される可能性があります。例外として、 パフォーマンスを向上させるために、メディエーション・ハンドラー・プロパティーからのみ 派生する値をキャッシュに入れる場合があります。
  • メディエーション・プログラミングには、EJB のプログラミングと同様の制限が課せられます。 これらの制限については、EJB 1.1 仕様書のセクション 18.1.2 に記載されています。
  • メディエーションには、適切なレベルのトランザクション・コントロールを選択してください。 例えば、メッセージ内のフィールドを操作するメディエーションでは、 トランザクション・コントロールの意味はないと考えられます。 一方で、データベース・フィールドを更新するメディエーションでは、トランザクション・コントロールが必要とされ、 メディエーション定義に UseGlobalTransaction フラグを設定するように管理者に注意する必要があります。このフラグはデフォルトで False に設定されています。
  • 特にメッセージ・フォーマットに適用されるヒント
    • メディエーションの機能がメッセージを操作した後に、メッセージ が引き続き予期されるフォーマットに準拠しているかを確認することは、良い実施例です。SIMessage インターフェースの isWellFormed メソッドを使用して、メッセージ・プロパティーの値をすべてシリアライズすることができること、 およびメッセージのデータ・グラフがメッセージのフォーマットに準拠していることを、 確認する必要があります。
    • メッセージの処理方法に応じて、一般的なフォーマットを受け入れるのではなく、 個別のニーズを満たすフォーマットを指定することができます。例えば、SOAP メッセージをバイト・ストリングとして扱う場合は、SIMessage インターフェースの getNewDataGraph メソッドを使用して、JMS/bytes のフォーマットを指定します。getNewDataGraph は、SIMessage ペイロード・コンテンツのコピーを含む新規 SDO データ・グラフを、フォーマット・フィールドによって指定されたツリー表現で返します (この例では、バイト・ストリング表現)。
    • メディエーション・コードのメッセージ・フォーマットをチェックすることをお勧めします。 これは、メディエーションで、予期しないフォーマットのメッセージを正しく処理できない場合があるためです。SIMessage インターフェースの getFormat メソッドを使用してください。
  • メディエーションによってサポートされている SDO のバージョンは バージョン 1 のみです。
  • メッセージに対する SDO ユーザー・インターフェースの制限により、メッセージ・アクセス・メソッドには ‘throws' 文節がありません。このため、構文解析エラーが原因でアクセス・メソッドによってスローされる例外は、 非検査例外になります。com.ibm.websphere.sib.exception パッケージの例外クラス SIMessageParseException を検査することにより、メディエーションで構文解析例外をキャッチすることができます。以下の例に類似したコードを使用します。
    try {
      // Function involving SDO message access
    } catch (SIMessageParseException e) {
      // Look at the real cause of the runtime exception, and act on it.
      // It is likely to indicate a parse failure...
      Throwable cause = e.getCause();
    }
    注: メディエーションが SIMessageParseException をキャッチしない場合は、メッセージのオリジナル・バージョンが例外宛先に送信されます。
  • メディエーションをデプロイする際には、ハンドラーおよびハンドラー・リストに覚えやすく内容を伝えやすい名前を指定してください。
  • 単一の宛先に単一のメディエーションをデプロイする場合には、 メディエーション・ハンドラー、メディエーション・ハンドラー・リスト、 および管理コンソールのメディエーション・オブジェクトに完全に同じ名前を使用してください。
  • パフォーマンス上の理由から、宛先を通過するメッセージのみからなる必要なサブセットを メディエーションが仲介するように、セレクター・ルールを指定してください。

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjy0115
ファイル名:cjy0115.html