第10章 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>
10.1. Atmosphere-Websocket オプション
Atmosphere Websocket コンポーネントは、以下に示す 8 個のオプションをサポートしています。
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
servletName (common) | 使用するサーブレットのデフォルト名。デフォルト名は CamelServlet です。 | 文字列 | |
httpRegistry (common) | カスタム org.apache.camel.component.servlet.HttpRegistry を使用します。 | HttpRegistry | |
attachmentMultipart Binding (共通) | Camel エクスチェンジで multipart/form-data を添付として自動的にバインドするかどうか。オプション attachmentMultipartBinding=true と disableStreamCache=false は一緒に使用できません。AttachmentMultipartBinding を使用するには、disableStreamCache を削除します。サーブレットの使用時にこれを有効にするには、サーブレット固有の設定が必要になる場合があるため、これはデフォルトでオフになっています。 | false | boolean |
httpBinding (上級) | カスタム 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
パスおよびクエリーパラメーターを使用します。
10.1.1. パスパラメーター (1 個のパラメーター):
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
servicePath | 必須 Websocket エンドポイントの名前 | 文字列 |
10.1.2. クエリーパラメーター(37 個のパラメーター):
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
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 | |
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 で使用する認証ホスト | 文字列 |