HTTP 要求の処理と 409 応答
IBM Traveler は HTTP 要求を特定の方法で処理し、その結果として、409 応答が返される場合があります。
IBM Traveler サーバーとそのデバイスとの間のすべての通信は、HTTP 経由で処理されます。IBM Domino に対して HTTP 要求が発行された場合、HTTP はその要求を、IBM Domino HTTP タスクの一部として実行されている IBM Traveler サーブレットに渡します。このサーブレットは主に、ローカルソケット経由で IBM Traveler タスクをパススルーします。つまり、要求は IBM Traveler に渡され、サーブレットがデバイスに HTTP 応答として返す応答を待機します。
デバイスと IBM Domino HTTP との間のネットワーク操作は、IBM Domino HTTP レベルでは認識されますが、IBM Domino HTTP の Web コンテナで実行されるサーブレットには渡されません。このため、IBM Traveler サーブレットは、応答の受信前にデバイスの接続が切断されるか、意図的に HTTP 要求が閉じられても、それを認識しません。
HTTP には多くの応答コードが定義されています。200 は OK です。409 は競合です。 その他の応答コードもありますが、ここではこの 2 つに注目します。
ほとんどのデバイスでは、サーバーとの間に開いている HTTP 要求は一時点で 1 つのみであることが知られています。デバイスが新しい要求を作成する必要がある場合、前の要求を閉じて、新しい要求を開きます。デバイスの接続が切断された場合、前の要求は自動的に閉じられ、接続が復元されたときにデバイスが新しい要求を開きます。 これらの要求が閉じられたときに (理由に関係なく)、IBM Domino HTTP は閉じられたことを認識しますが、IBM Traveler サーブレットは認識しません。結果として、要求が開いたままになり、HTTP スレッドを含むシステムリソースをその要求が保持したままになります。これらのリソースを解放するために、新しい要求が受信され、デバイスが前の要求を閉じたことが (それまでの情報により) わかっている場合には、前の要求を閉じるロジックが IBM Traveler にあります。この要求を閉じるために、IBM Traveler サーブレットは IBM Domino HTTP に何らかの応答を返す必要があり、次に IBM Domino HTTP が、その応答を送信しようとします。その応答は、要求が閉じられているため、最終的には送信できませんが、この過程でログに記録されます。IBM Traveler がこの場合に使用する HTTP コードは、この新しい要求が古い要求と競合するというロジックに基づき、409 になります。そのため、多くの HTTP 409 応答が (IBM Traveler と HTTP の) ログに記録されることがあります。これらは、200 (OK) 応答ではありませんが、問題を示しているわけではなく、上記の状況での HTTP リソースの管理方法を表しています。
システムに関与しているプロキシまたはファイアウォールがある場合、同様に、それらの独自の要求がまだ開いているが 409 応答が返される可能性があります。ただし、デバイスは最終的にはその応答を受信しません。要求は、デバイスとサーバー間の経路上の少なくとも 1 地点で破棄されるためです。