HTTPInput または SOAPInput ノードの HTTP タイムアウト・ターミナルをさらに別のノードに接続して、タイムアウトを処理します。
タイムアウトを処理するために、HTTP タイムアウト・ターミナルをさらに別のノードに接続して、HTTPInput または SOAPInput ノードと共に開始するメッセージ・フローを構成できます。
これらのノードの 1 つを含むメッセージ・フローに BAR ファイルをデプロイする際にこれらの条件が満たされていない場合、警告が生成されて、HTTP タイムアウト・ターミナルに接続したメッセージ・フローのパスは無視されます。 次の再始動まで、それ以上の警告は生成されません。
入力ノードで静的なタイムアウト値を設定するには、以下のようにします。
この有効期限が切れた場合、1 つ以上のノードを HTTP タイムアウト・ターミナルに接続していなければ、クライアント要求メッセージを受け取るリスナーは SOAP Fault メッセージで応答して、タイムアウトが生じたことを示します。
入力ノードに動的なタイムアウト値を設定するには、以下のようにします。
MbMessage localEnv = assembly.getLocalEnvironment();
MbElement rootElem = localEnv.getRootElement();
MbElement repIdElement = rootElem.getFirstElementByPath(
"/Destination/SOAP/Reply/ReplyIdentifier");
Object repId = repIdElement.getValue();
boolean success = changeIdentifierTimeout((byte[])repId, timeout);
HTTP タイムアウト・ターミナルから伝搬させることにより、メッセージ・フローがクライアントに送る応答の内容を変更できます。 HTTP タイムアウト・ターミナルに接続するノードのシーケンスの処理は、それ以降のタイムアウトにも依存するので、クライアントは常に既知のタイムアウト間隔内に応答を受け取ります。
(0x01000000:Name):HTTP = (
(0x01000000:Name):Input = (
(0x01000000:Name):Timeout = (
(0x03000000:NameValue):OriginalClientLastWaitTime = 10 (INTEGER)
(0x03000000:NameValue):OriginalClientWaitTime = 15 (INTEGER)
(0x03000000:NameValue):OriginalMessageMadeTheFlow = TRUE (BOOLEAN)
(0x03000000:NameValue):OriginalRequestIdentifier =
X'48545450000000000000000000000000c00c000000000000' (BLOB)
(0x03000000:NameValue):OriginalInboundMessage = X'3c3e' (BLOB)
)
)
)
SOAPInput ノードでは、 HTTP タイムアウト・ターミナル・パスに接続された SOAPReply ノードが SOAP 障害応答メッセージを送る必要があり、 応答状況コードの 500 を変更することはできません。 HTTPInput ノードでは、任意の応答メッセージを HTTP タイムアウト・ターミナルから送ることができ、応答状況コードは LocalEnvironment.Destination.HTTP.ReplyStatusCode メッセージ・ツリー・フィールドを更新することによって変更できます。