第11章 Atmosphere Websocket コンポーネント

Camel バージョン 2.14 以降で利用可能

Attention-websocket: コンポーネントは、Websocket を介して外部クライアントと通信するサーブレットに Websocket ベースのエンドポイントを提供します (外部クライアントからの Websocket 接続を受け入れるサーブレットとして)。
このコンポーネントは、SERVLET コンポーネントを使用し、Atmosphere ライブラリーを使用して、さまざまなサーブレットコンテナー (Jetty、Tomcat など) で Websocket トランスポートをサポートします。

組み込みの Jetty サーバーを起動する Websocket コンポーネントとは異なり、このコンポーネントはコンテナーのサーブレットプロバイダーを使用します。

Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-atmosphere-websocket</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

11.1. Atmosphere-Websocket オプション

Atmosphere Websocket コンポーネントは、以下に示す 9 個のオプションをサポートしています。

名前説明デフォルトタイプ

servletName (consumer)

使用するサーブレットのデフォルト名。デフォルト名は CamelServlet です。

CamelServlet

String

httpRegistry (consumer)

カスタム org.apache.camel.component.servlet.HttpRegistry を使用します。

 

HttpRegistry

attachmentMultipart Binding (consumer)

Camel エクスチェンジで multipart/form-data を添付として自動的にバインドするかどうか。オプション attachmentMultipartBinding=true と disableStreamCache=false は一緒に使用できません。AttachmentMultipartBinding を使用するには、disableStreamCache を削除します。サーブレットの使用時にこれを有効にするには、サーブレット固有の設定が必要になる場合があるため、これはデフォルトでオフになっています。

false

boolean

fileNameExtWhitelist (consumer)

アップロードされたファイルを受け入れるための受け入れられたファイル名拡張子のホワイトリスト。複数の拡張子は、txt、xml のようにコンマで区切ることができます。

 

String

httpBinding (advanced)

カスタム HttpBinding を使用して、Camel メッセージと HttpClient との間のマッピングを制御します。

 

HttpBinding

httpConfiguration (advanced)

共有 HttpConfiguration を基本設定として使用するには、以下を行います。

 

HttpConfiguration

allowJavaSerialized Object (advanced)

リクエストが context-type=application/x-java-serialized-object を使用する場合に Java シリアル化を許可するかどうか。これは、デフォルトでオフになっています。これを有効にすると、Java が受信データをリクエストから Java にデシリアライズし、セキュリティー上のリスクが生じる可能性があることに注意してください。

false

boolean

headerFilterStrategy (filter)

カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。

 

HeaderFilterStrategy

resolveProperty Placeholders (advanced)

起動時にコンポーネントがプロパティープレースホルダーを解決するかどうか。String タイプのプロパティーのみがプロパティープレースホルダーを使用できます。

true

boolean

Atmosphere Websocket エンドポイントは、URI 構文を使用して設定されます。

atmosphere-websocket:servicePath

パスおよびクエリーパラメーターを使用します。

11.1.1. パスパラメーター (1 個のパラメーター):

名前説明デフォルトタイプ

servicePath

必須 Websocket エンドポイントの名前

 

String

11.1.2. クエリーパラメーター (38 パラメーター)

名前説明デフォルトタイプ

chunked (common)

このオプションが false の場合、サーブレットは HTTP ストリーミングを無効にし、応答に content-length ヘッダーを設定します。

true

boolean

disableStreamCache (common)

サーブレットからの生の入力ストリームがキャッシュされるかどうかを決定します (Camel はストリームをメモリー内/ファイルへのオーバーフロー、ストリームキャッシュに読み込みます)。デフォルトでは、Camel はサーブレット入力ストリームをキャッシュして複数回の読み取りをサポートし、Camel がストリームからすべてのデータを取得できるようにします。ただし、ファイルやその他の永続ストアに直接ストリーミングするなど、生のストリームにアクセスする必要がある場合は、このオプションを true に設定できます。ストリームの複数回の読み取りをサポートするためにこのオプションが false の場合、DefaultHttpBinding は要求入力ストリームをストリームキャッシュにコピーし、それをメッセージ本文に入れます。サーブレットを使用してエンドポイントをブリッジ/プロキシーする場合、メッセージペイロードを複数回読み取る必要がない場合は、このオプションを有効にしてパフォーマンスを向上させることを検討してください。http/http4 プロデューサーは、デフォルトでレスポンスボディーストリームをキャッシュします。このオプションを true に設定すると、プロデューサは応答本文ストリームをキャッシュせず、応答ストリームをそのままメッセージ本文として使用します。

false

boolean

headerFilterStrategy (common)

カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。

 

HeaderFilterStrategy

sendToAll (common)

すべてに送信する (ブロードキャスト) か、単一の受信者に送信するか。

false

boolean

transferException (common)

有効にすると、エクスチェンジがコンシューマー側で処理に失敗し、発生した例外が application/x-java-serialized-object コンテンツタイプとして応答でシリアライズされた場合に、例外がシリアライズされました。プロデューサー側では、例外がデシリアライズされ、HttpOperationFailedException ではなくそのまま出力されます。原因となった例外はシリアライズする必要があります。これは、デフォルトでオフになっています。これを有効にすると、Java が受信データをリクエストから Java にデシリアライズし、セキュリティー上のリスクが生じる可能性があることに注意してください。

false

boolean

useStreaming (common)

ストリーミングを有効にして、データを複数のテキストフラグメントとして送信します。

false

boolean

httpBinding (common)

カスタム HttpBinding を使用して、Camel メッセージと HttpClient との間のマッピングを制御します。

 

HttpBinding

async (consumer)

非同期モードで動作するようにコンシューマーを設定します

false

boolean

bridgeErrorHandler (consumer)

コンシューマーの Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、コンシューマーが受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、コンシューマーは org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。

false

boolean

httpMethodRestrict (consumer)

GET/POST/PUT など、HttpMethod が一致する場合にのみ消費を許可するために使用されます。複数のメソッドをコンマで区切って指定できます。

 

String

matchOnUriPrefix (consumer)

完全に一致するものが見つからない場合に、コンシューマーが URI 接頭辞を照合してターゲットコンシューマーを見つけようとするかどうか。

false

boolean

responseBufferSize (consumer)

javax.servlet.ServletResponse.

 

Integer

servletName (consumer)

使用するサーブレットの名前

CamelServlet

String

attachmentMultipartBinding (consumer)

Camel エクスチェンジで multipart/form-data を添付として自動的にバインドするかどうか。オプション attachmentMultipartBinding=true と disableStreamCache=false は一緒に使用できません。AttachmentMultipartBinding を使用するには、disableStreamCache を削除します。サーブレットの使用時にこれを有効にするには、サーブレット固有の設定が必要になる場合があるため、これはデフォルトでオフになっています。

false

boolean

eagerCheckContentAvailable (consumer)

content-length ヘッダーが 0 または存在しない場合に、HTTP リクエストにコンテンツがあるかどうかを先行チェックするかどうか。これは、HTTP クライアントがストリーミングデータを送信しない場合に有効にすることができます。

false

boolean

exceptionHandler (consumer)

コンシューマーによるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、コンシューマーは例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。

 

ExceptionHandler

exchangePattern (consumer)

コンシューマーがエクスチェンジを作成する際に交換パターンを設定します。

 

ExchangePattern

fileNameExtWhitelist (consumer)

アップロードされたファイルを受け入れるための受け入れられたファイル名拡張子のホワイトリスト。複数の拡張子は、txt、xml のようにコンマで区切ることができます。

 

String

optionsEnabled (consumer)

このサーブレットコンシューマーに対して HTTP OPTIONS を有効にするかどうかを指定します。デフォルトでは、OPTIONS はオフになっています。

false

boolean

traceEnabled (consumer)

このサーブレットコンシューマーに対して HTTP TRACE を有効にするかどうかを指定します。デフォルトでは、TRACE はオフになっています。

false

boolean

bridgeEndpoint (producer)

オプションが true の場合、HttpProducer は Exchange.HTTP_URI ヘッダーを無視し、エンドポイントの URI を要求に使用します。オプション throwExceptionOnFailure を false に設定して、HttpProducer がすべての障害応答を送り返すようにすることもできます。

false

boolean

connectionClose (producer)

Connection Close ヘッダーを HTTP 要求に追加する必要があるかどうかを指定します。デフォルトでは、connectionClose は false です。

false

boolean

copyHeaders (producer)

このオプションが true の場合、IN 交換ヘッダーは、コピー戦略に従って OUT 交換ヘッダーにコピーされます。これを false に設定すると、HTTP 応答からのヘッダーのみを含めることができます (IN ヘッダーは伝播されません)。

true

boolean

httpMethod (producer)

使用する HTTP メソッドを設定します。設定されている場合、HttpMethod ヘッダーはこのオプションをオーバーライドできません。

 

HttpMethods

ignoreResponseBody (producer)

このオプションが true の場合、http プロデューサーは応答本文を読み取らず、入力ストリームをキャッシュしません。

false

boolean

preserveHostHeader (producer)

オプションが true の場合、HttpProducer は Host ヘッダーを現在の Exchange Host ヘッダーに含まれる値に設定します。これは、ダウンストリームサーバーが受信した Host ヘッダーにアップストリームクライアントが呼び出した URL を反映させたいリバースプロキシーアプリケーションで役立ちます。Host ヘッダーを使用するアプリケーションが、プロキシーされたサービスの正確な URL を生成できるようにします。

false

boolean

throwExceptionOnFailure (producer)

リモートサーバーからの応答が失敗した場合に HttpOperationFailedException を出力することを無効にするオプション。これにより、HTTP ステータスコードに関係なくすべての応答を取得できます。

true

boolean

cookieHandler (producer)

HTTP セッションを維持するようにクッキーハンドラーを設定します。

 

CookieHandler

okStatusCodeRange (producer)

正常な応答と見なされるステータスコード。値は含まれます。複数の範囲をコンマで区切って定義できます (例: 200-204,209,301-304)。各範囲は、ダッシュを含む 1 つの数字または from-to である必要があります。

200-299

String

urlRewrite (producer)

非推奨 カスタム org.apache.camel.component.http.UrlRewrite を参照して、エンドポイントをブリッジ/プロキシーするときに URL を書き換えることができます。詳細は、http://camel.apache.org/urlrewrite.html を参照してください。

 

UrlRewrite

mapHttpMessageBody (advanced)

このオプションが true の場合、交換の IN exchange ボディは HTTP ボディにマップされます。これを false に設定すると、HTTP マッピングが回避されます。

true

boolean

mapHttpMessageFormUrl EncodedBody (advanced)

このオプションが true の場合、交換の IN exchange Form Encoded ボディは HTTP にマップされます。これを false に設定すると、HTTP Form Encoded ボディマッピングが回避されます。

true

boolean

mapHttpMessageHeaders (advanced)

このオプションが true の場合、交換の IN exchange ヘッダーは HTTP ヘッダーにマップされます。これを false に設定すると、HTTP ヘッダーのマッピングが回避されます。

true

boolean

synchronous (advanced)

同期処理を厳密に使用するか、Camel が非同期処理を使用できるかどうかを設定します (サポートされている場合)。

false

boolean

proxyAuthScheme (proxy)

使用するプロキシー認証スキーム

 

String

proxyHost (proxy)

使用するプロキシーホスト名

 

String

proxyPort (proxy)

使用するプロキシーポート

 

int

authHost (security)

NTML で使用する認証ホスト

 

String