メッセージの送信時および受信時に HTTP 圧縮 および圧縮解除を使用するように、HTTP ノードと SOAP ノードを構成することができます。
これらのノードは、要求メッセージの圧縮、応答の受け入れと圧縮解除、 および入力メッセージの圧縮解除を行うように構成できます。
HTTP トランスポートは、 圧縮データの送信をサポートします。 データが圧縮されていること、 および圧縮に使用された圧縮技法を示すために、特定の HTTP ヘッダー・フィールドが 使用されます。 HTTP クライアントは HTTP 要求を行う際に、 圧縮した応答を受け入れることと受け入れる圧縮データのタイプを 指定できます。 HTTP トランスポートでサポートされている 3 つの圧縮技法は、 GZIP、deflate、および compress です。
「Accept-Encoding」フィールドは、 要求に対して応答メッセージで受け入れられるエンコードを示すために、 HTTP 要求で使用されます。 このフィールドを使用して、gzip、deflate、compress および identity (大/小文字を区別しない) の値を指定します。 identity の値は、データが圧縮されていてはならないことを示します。 ワイルドカード * は、すべてのエンコードが受け入れられることを示します。 「Accept-Encoding」フィールドは空にすることもでき、これはエンコードが受け入れられないことを示します。
「Content-Encoding」ヘッダー・フィールドは、データに適用されるエンコードを示し、 gzip、deflate、および compress (identity は除く) のトークンを含めることができます。 データが HTTP メッセージ用に圧縮される場合、 「Content-Encoding」フィールドには使用された圧縮技法の名前が含まれ、 これにより、受信者は圧縮方式を識別して、メッセージ・データを正しく圧縮解除することができます。
「TE」ヘッダー・フィールドは、応答で受け入れる拡張転送エンコード を示すために、要求ヘッダーで使用されます。 これは、 「Accept-Encoding」フィールドに似ています。
「Transfer-Encoding」フィールドは、エンティティーではなくメッセージのプロパティーであることを除いては、 「Content-Encoding」フィールドに似ています。 「Transfer-Encoding」フィールドは主に、 応答メッセージがチャンクされていることを示すために使用されます。 「chunked, gzip」などの他の転送エンコーディングを示す Transfer-Encoding ヘッダーを 受信することが可能です。 この場合は、 gzip は実際のデータそのものではなく、データの転送に適用されます。
WebSphere® Message Broker は、 以下に示すように「Accept-Encoding」フィールドと「Content-Encoding」フィールドを使用して、HTTP ノードおよび SOAP ノードでの圧縮と圧縮解除をサポートします。
要求 HTTP メッセージを圧縮する際に、ノードは、 「Content-Encoding」フィールドをチェックして、 メッセージ・データがすでに圧縮されているかどうかを判別します。 データが特定の方式ですでに圧縮されている場合は、 それ以上の圧縮は必要ありません。 ただし、既存のデータが、 ノード・プロパティーで指定されていないエンコードで圧縮されている場合、 ノードはノード・プロパティーで指定されているエンコードを使用して、 圧縮したビット・ストリームをさらに圧縮します。 「Content-Encoding」フィールドの値が 更新され、追加のエンコードがデータに適用されたことを示します。 例えば、Content-Encoding 値 deflate,gzip は、 最初に deflate を使用してメッセージを圧縮解除し、その後でさらに gzip を使用して圧縮解除する 必要があることを示します。
HTTP および SOAP ノードは、 ユーザーが応答に対して圧縮タイプの優先加重を指定できるようにするための、 「Accept-Encoding」フィールドの品質値をサポートしません。 「Accept-Encoding」フィールドの品質値はいずれも無視されます。
要求ノードは、圧縮した応答を要求したり、処理したりすることができます。 応答での圧縮が許可されていることを示すように要求ノードを構成することができます。 このノードは圧縮した応答を自動的に圧縮解除します。 Accepts-Encoding ヘッダーは、GZIP および deflate 圧縮技法が 受け入れられることを示すように設定されます。 Accept-Encoding ヘッダーが 既に設定されている場合、ノードはその設定をオーバーライドしません。
要求または AsyncResponse ノードが GZIP または deflate で圧縮した応答を受け取る場合、 この応答は圧縮解除され、メッセージが圧縮されていることを示すすべてのヘッダー表示が 除去されます。 ノードが無効な圧縮応答または認識されない圧縮機能を受け取ると、 データを圧縮解除できないことを示す例外が発生します。
要求ノードは、圧縮した要求も送信できます。 ノードが送信する要求を圧縮するために使用する圧縮技法を指定するよう、 ノードを構成することができます。 Content-Encoding ヘッダーの値は、使用される圧縮を示すように設定されます。 個々のメッセージについて、ローカル環境でこの値をオーバーライドすることができます。 ノードによって認識されない値でローカル環境をオーバーライドすると、 「圧縮の使用」の既存のノード値が使用されます。