Route via JMS アサーション

Route via JMS アサーションは、Gateway からの送信サービス メッセージの JMS 移送の設定を可能にします。ポリシーでこのアサーションを使用するには、JMS 宛先が以下の状態であることを確認してください。
gateway90
Route via JMS
アサーションは、Gateway からの送信サービス メッセージの JMS 移送の設定を可能にします。ポリシーでこのアサーションを使用するには、JMS 宛先が以下の状態であることを確認してください。
  1. 適切なサーバ(TIBCO EMS、LDAP を介した IBM WebSphere またはその他のカスタム サーバ)で設定されている。
  2. JNDI ディレクトリで参照されている。
  3. Policy Manager に登録されている。
詳細については、「JMS 宛先の管理」を参照してください。
 
 
同じ名前の複数の JMS プロパティがメッセージに存在する場合、最後に追加されたもののみが Route via JMS アサーションおよび受信リクエスト リスナによって使用されます。
管理者は JMS ルーティングに必要なアイテムのインストールおよび設定を担当します。JMS のポリシーの実行中にエラーが発生する場合は、管理者に問い合わせてください。
Route via JMS アサーションおよび宛先は JMS 1.0 標準をサポートします。
このアサーションによって作成されるコンテキスト変数
Route via JMS アサーションは、JMS 応答メッセージからのヘッダ情報を使用して以下のコンテキスト変数を設定します。
JMS 宛先が「No replies (one-way)」に対して設定されている場合、([JMS Destination Properties]-[Outbound Options]タブ-[Outbound Reply Behavior])応答コンテキスト変数は設定されません。詳細については、「JMS 宛先の管理」を参照してください。
変数
説明
${response.jms.header.
<名前>
}
JMS 応答ヘッダの値を返します。<
名前
> はヘッダ名です。
${response.jms.headernames}
これは、存在するすべてのヘッダの名前を返す複数値のコンテキスト変数です。
${response.jms.allheadervalues}
存在するすべてのヘッダの名前および値を
headername:headervalue
の形式で返す複数値を持つコンテキスト変数です。
含まれる可能性があるヘッダを以下に示します。
JMSDestination
JMSDeliveryMode
JMSExpiration
JMSPriority
JMSMessageID
JMSTimestamp
JMSCorrelationID
JMSReplyTo
JMSType
JMSRedelivered
Gateway が JMS のリクエストを受信するときに作成されるコンテキスト変数のリストについては、「JMS 宛先の管理」を参照してください。
アサーションの使用
  1. 以下のいずれかを実行します。
    • アサーションをポリシー作成ウィンドウに追加するには、「アサーションの追加」を参照してください。
    • 既存のアサーションの設定を変更するには、下記の手順 2 に進みます。
  2. アサーションを追加すると、[
    JMS Routing Properties
    ]ダイアログ ボックスが自動的に表示されます。アサーションを変更する場合は、ポリシー ウィンドウで[
    Route via JMS
    ]を右クリックして[
    JMS Routing Properties
    ]を選択するか、ポリシー ウィンドウでアサーションをダブルクリックします。このアサーションのプロパティが表示されます。これらのプロパティは以下の各タブに整理されています。
    Target
    Security
    Request
    Response
  3. 必要に応じて各タブを設定します。各タブの詳細な説明については、以下の該当するセクションを参照してください。
  4. JMS Destination
    ]ドロップダウン リストから、使用するターゲット送信宛先を選択します。必要なターゲット宛先が存在しない場合は、[
    New Destination
    ]をクリックして新しい JMS 宛先を作成します。宛先の定義については、「JMS 宛先の管理」を参照してください。
  5. 前の手順でテンプレート送信宛先を選択した場合は、[
    Dynamic Properties
    ]セクションで送信先の設定を完了します。動的プロパティは、設計時にではなく実行時に設定されるプロパティです。
  6. 完了したら、[
    OK
    ]をクリックします。
[Target]タブの設定
[Target]タブは、JMS キューまたはトピックを選択し、動的なプロパティおよびタイムアウトを設定するために使用されます。
  1. JMS Destination
    ]ドロップダウン リストから、使用するターゲット送信宛先を選択します。必要なターゲット宛先が存在しない場合は、[
    New Destination
    ]をクリックして新しい JMS 宛先を作成します。宛先の定義については、「JMS 宛先の管理」を参照してください。
  2. 前の手順でテンプレート送信宛先を選択した場合は、[
    Dynamic Properties
    ]セクションで送信先の設定を完了します。動的プロパティは、設計時にではなく実行時に設定されるプロパティです。
    詳細については、「JMS 宛先の管理」にある「
    テンプレート送信宛先
    」を参照してください。
    (1) 値が送信先の定義中に入力されている場合、それはここで表示されますが変更できません。(2)多数の送信先が使用されている場合、アイドル時間の削減およびキャッシュ サイズの増加により、パフォーマンスを向上させることができます。これらは、それぞれ
    io.jmsConnectionCacheMaxIdleTime
    および
    io.jmsConnectionCacheMaxSize
    クラスタ プロパティを使用して制御されます。
    動的プロパティ
    詳細の参照先
    Initial Context Factory class name
    [JMS Destination Properties]の[JNDI]タブ
    JNDI URL
    [JMS Destination Properties]の[JNDI]タブ
    JNDI User Name
    [JMS Destination Properties]の[JNDI]タブ
    ヒント:
    [JMS Routing Properties]の[JNDI User Name]ではコンテキスト変数を参照できます。
    JNDI Password
    [JMS Destination Properties]の[JNDI]タブ
    ヒント:
    [JMS Routing Properties]の[JNDI Password]ではコンテキスト変数を参照できます。
    Connection Factory Name
    [JMS Destination Properties]の[Destination]タブ
    ヒント:
    [JMS Routing Properties]の[Connection Factory Name]ではコンテキスト変数を参照できます。
    Destination Name
    [JMS Destination Properties]の[Destination]タブ
    ヒント:
    [JMS Routing Properties]の[Destination Name]ではコンテキスト変数を参照できます。
    Destination User Name
    [JMS Destination Properties]の[Destination]タブ
    ヒント:
    [JMS Routing Properties]の[Destination User Name]ではコンテキスト変数を参照できます。
    Destination Password
    [JMS Destination Properties]の[Destination]タブ
    ヒント:
    [JMS Routing Properties]の[Destination Password]ではコンテキスト変数を参照できます。
    Wait for Reply on specified queue
    [JMS Destination Properties]の[Outbound Options]タブ
    注:
    テンプレート キュー内の[Outbound Reply Behavior]が[Wait for Reply]ではない場合、このフィールドは空白となり編集できません。
  3. 必要に応じて
    JMS 応答タイムアウト
    値のグローバル デフォルト(
    jms.ResponseTimeout
    クラスタ プロパティで定義)をこの 1 つの宛先についてオーバーライドする場合は、[JMS response timeout]に応答タイムアウト値を入力します。値は
    0
    (ゼロ)より大きい必要があります。ミリ秒単位の値を入力するか、タイムアウト値が含まれるコンテキスト変数を入力します。アサーションはこの期間応答を待機してからタイムアウトになります。
    ヒント:
    グローバル デフォルトは
    jms.ResponseTimeout
    クラスタ プロパティによって指定されています。
    JMS 応答タイムアウトがクライアント上の HTTP 応答タイムアウトより大きくないことを確認してください。大きい場合、データが失われる可能性があります。(クライアント応答タイムアウトはそれぞれ異なりますが、Web ブラウザについては、通常 2 分です。)
[Security]タブの設定
[Security]タブはサービス認証および WSS ヘッダ処理を設定するために使用されます。
  1. Service Authentication
    ]セクションで、認証を使用する必要があるかどうかを示します。JMS ルーティング中のサービスの認証
    オプション
    説明
    None (Anonymous)
    リクエスタのアイデンティティが認証されていない場合(匿名のリクエスト)は、このオプションを選択します。
    Attach SAML Sender-Vouches
    SAML sender-vouches チケットを Gateway によって認証された各送信バックエンド リクエストに添付するには、このオプションを選択します。このチケットには、認証されたユーザのユーザ名と共に有効期限が含まれており、SSL 証明書を使用して Gateway によって署名されています。
    SAML Sender-Vouches を使用する場合、以下を指定します。
    • SAML Version:
      SAML 1.1 または 2.0 のどちらが使用されているかを指定します。
    • Ticket expiry:
      チケットの有効期限を分単位(整数のみ)で入力します。デフォルトは 5 分です。
    注:
    このオプションは SOAP Web サービス ポリシーに対してのみ有効化されます。これは、以下のように Require SAML Token Profile アサーションとは異なります。
    • Attach SAML Sender-Vouches
      ]オプションは、Gateway から保護されているサービスへの送信メッセージに追加されています。
    • Require SAML Token Profile アサーション
      は、SAML セキュリティがクライアント アプリケーションから Gateway への受信メッセージ内にすでに存在していることを必要とします。
    Current WSS header handling
    ]セクションで、セキュリティ ヘッダの処理方法を指定します。JMS ルーティング中の WSS ヘッダの処理
    オプション
    説明
    Don't modify the request Security header
    送信 SOAP リクエスト メッセージ内のセキュリティ ヘッダをそのまま残すように Gateway に指示します。ただし、Gateway がメッセージ処理中に暗号化されたマテリアルを復号化する必要があった場合、リクエストのセキュリティ ヘッダが変更されている可能性があります。
    保護されたサービスがリクエストの元のセキュリティ ヘッダの独自のチェックを必要とする場合、または、保護されたサービスがそのリクエスト メッセージ内のセキュリティ ヘッダの有無に無関係な場合、この設定を使用します。
    最高のパフォーマンスを得るために、可能な場合は必ずこの設定を使用して、リクエストあたりのメッセージ変更量を最小化してください。
    ポリシーが WS-Security を使用する場合は、セキュリティ ヘッダを変更しないでください。詳細については、「Add or Remove WS-Security アサーション」を参照してください。
    Remove Layer 7 actor and mustUnderstand attributes from processed Security header
    送信 SOAP メッセージ内のセキュリティ ヘッダから「mustUnderstand」属性および「Layer 7」アクタを削除するように Gateway に指示します。
    Layer 7 アクタの存在がバックエンド サービスに関する問題を引き起こす場合は、この設定を使用します。いくつかの場合において、このアクタが原因でバックエンド サービスがセキュリティ ヘッダを無視する可能性があります。これは、バックエンド サービスが、そのセキュリティ ヘッダが別のサービスに向けられていると認識するためです。また、バックエンド サービスがセキュリティをサポートせず、セキュリティ ヘッダ上で「mustUnderstand」がアサートされたリクエストを拒否する場合、この設定を使用します。
    別の方法として、セキュリティ ヘッダを完全に削除することも考えられますが、メッセージからこれらを削除するには追加の処理が必要となり、これはパフォーマンスの低下を招きます。また、ログ記録の目的で、セキュリティ ヘッダを原型のまま保持することが推奨されます。
    Remove processed Security header from request before routing
    保護されているサービスにリクエストを転送する前に Gateway によって処理されたすべてのセキュリティ ヘッダを削除するように Gateway に指示します。
    保護されているサービスが、転送された SOAP リクエスト内のセキュリティ ヘッダを予期していない場合、この設定を使用します。
[Request]タブの設定
[Request]タブは、リクエスト メッセージのメッセージ ソースの選択、およびプロパティ転送の設定に使用されます。
  1. Message Source
    ]で、ドロップダウン リストからリクエスト メッセージのメッセージ ソースを指定します。:リクエスト(
    Request
    )、応答(
    Response
    )、または設定済みのメッセージ コンテキスト変数から選択します。これらの変数は、Set Context Variable アサーション、または Route via JMS アサーションの
    [Response message properties]
    セクションで作成されている可能性があります。
  2. 以下のデフォルト JMS リクエスト設定のいずれかを変更する必要がある場合は、[
    Use request settings
    ]チェック ボックスをオンにします。
    • Delivery Mode:
      使用する JMS 配信モードを、[Persistent](永続)または[Non-Persistent](非永続)から選択します。
    • Priority:
      0 から 9 までの値を入力して JMS のリクエストの優先度モードを指定します。0 が最低の優先度で、9 が最高の優先度です。デフォルトは
      4
      です。
    • Time To Live:
      JMS メッセージが期限切れになるまでの時間をミリ秒単位で入力します。デフォルト値の
      0
      (ゼロ)は、メッセージが期限切れにならないことを意味します。
  3. JMS リクエスト メッセージからのプロパティがどのように処理されるかを示します。
    • すべての JMS メッセージ プロパティ のパス スルーを許可する場合は、[
      Pass through all JMS message properties
      ]を選択します。(元のリクエストが JMS メッセージである場合にのみ、パス スルーする JMS メッセージ プロパティが存在します。)
    • 以下のいずれかを行う場合は、[
      Customize JMS message properties to forward
      ]を選択します。
      • どの JMS メッセージ プロパティをパス スルーするか、どのようにパス スルーするかをカスタマイズする
      • JMS メッセージ プロパティの値をカスタマイズする
      • 元のリクエストに存在しないプロパティを作成する(元のリクエストが JMS メッセージでない場合など)。
      パス スルーする JMS メッセージ プロパティをカスタマイズする場合は、下の表でパス スルーする名前と値を定義します。
      目的
      方法
      プロパティをリストに追加する
      1. Add
        ]をクリックします。[JMS Message Property Setting]ダイアログ ボックスが表示されます。
      2. [Property]
        [Name]
        に、それぞれプロパティと名前を入力します。(注: プロパティ名は、JMS 仕様で指定されたルールに従う必要があります)。
      3. このプロパティに対する処理を指定します。
        • Pass through original value:
          受信リクエストにプロパティが存在する場合は、ダウンストリームにそのまま渡します。  
        • Customize value:
          カスタム文字列値を持つプロパティを挿入します。隣接したボックスにカスタム値を入力します。固定値、または実行時に適切な値に解決するコンテキスト変数を含む文字列を入力できます。たとえば、「
          Hello, my ID is ${requestId} and the time is ${gateway.time}. Have a nice day
          .」と入力できます。
          注:
          Policy Manager は、入力されたカスタム値が指定されたプロパティに対して適切であることを確認します。ただし、コンテキスト変数が指定された場合、設計時にデータ型を検証することができず、不正なデータ型がある場合には実行時にエラーが発生します。以下のデータ型が各プロパティに対して適用されます。
          JMSXUserID: String
          JMSXAppID: String
          JMSXDeliveryCount: int
          JMSXGroupID: String
          JMSXGroupSeq: int
          JMSXProducerTXID: String
          JMSXConsumerTXID: String
          JMSXRcvTimestamp: long
          JMSXState:
          int
           
      4. OK
        ]をクリックします。新しいプロパティが表に追加されます。
      リスト内のプロパティを変更する
      1. 変更するプロパティを選択し、[
        Edit
        ]をクリックするか、行をダブルクリックします。[JMS Message Property Setting]ダイアログ ボックスが表示されます。
      2. 必要に応じて情報を変更します。詳細については、上記の「プロパティをリストに追加する」を参照してください。
      3. OK
        ]をクリックします。変更されたプロパティが表に表示されます。
      リストからプロパティを削除する
      1. 削除する行を選択します。
      2. Remove
        ]をクリックします。プロパティはすぐに削除されます。
[Response]タブの設定
Response
]タブは、メッセージ送信先およびプロパティ転送を設定するために使用されます。
  1. Message Destination
    ]で、メッセージ送信先を選択します。
    • メッセージをデフォルトの応答送信先に送信するには、[
      Default Response
      ]を選択します。
    • 応答メッセージをここで指定するコンテキスト変数に保存するには、[
      Save as context variable
      ]を選択します。新しい変数または既存の変数を定義できます。入力したコンテキスト変数名に関する即時のフィードバックを表す検証メッセージが表示されます。表示される検証メッセージの説明については、「コンテキスト変数の検証」を参照してください。
  2. 応答メッセージ サイズの上限を指定します。
    • Override maximum message size:
      ルーティング メッセージの最大許容サイズをオーバーライドするにはこのチェック ボックスをオンにします。
      io.jmsMessageMaxBytes
      クラスタ プロパティで設定された値を使用するには、このチェック ボックスをオフにします。
      • Restrict messages to:
        レスポンス メッセージに許可する最大サイズを入力します(バイト単位)。コンテキスト変数を指定することもできます。 
      • Allow unlimited message size (not recommended):
        無制限のサイズのレスポンス メッセージを許可するには、このオプションを選択します。
  3. JMS 応答リクエスト メッセージからのプロパティがどのように処理されるかを示します。
    • Pass through all JMS message properties
    • Customize JMS message properties to forward
    これらの設定の説明は、上記の「[
    Request
    ]タブの設定」を参照してください。