第10章 Atmo336 Websocket Component
Camel バージョン 2.14 から利用可能
atmo336-websocket: コンポーネントは、(外部クライアントから websocket 接続を受け入れるサーブレットとして)Websocket 経由で外部クライアントと通信するサーブレットに Websocket ベースのエンドポイントを提供します。
コンポーネントは SERVLET コンポーネントを使用し、 Atmo336 ライブラリーを 使用してさまざまなサーブレットコンテナーで Websocket トランスポートをサポートします(例: Jetty、Tomcat、…)。
埋め込み 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. atmo336-Websocket オプション
Atmo336 Websocket コンポーネントは、以下に示す 8 個のオプションをサポートします。
Name | 説明 | デフォルト | Type |
---|---|---|---|
servletName (common) | 使用するサーブレットのデフォルト名。デフォルトの名前は CamelServlet です。 | 文字列 | |
httpRegistry (common) | カスタムの org.apache.camel.component.servlet.HttpRegistry を使用します。 | HttpRegistry | |
attachmentMultipart Binding (common) | マルチパート/フォームデータを Camel Exchange で添付として自動バインドするかどうか。attachmentMultipartBinding=true オプションおよび disableStreamCache=false オプションは併用できません。AttachmentMultipartBinding を使用するには disableStreamCache を削除します。サーブレットの使用時にこの設定を有効にするためにサーブレット固有の設定を必要とする可能性があるため、これはデフォルトで無効になります。 | false | boolean |
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 |
Atmo336 Websocket エンドポイントは、URI 構文を使用して設定します。
atmosphere-websocket:servicePath
以下の path パラメーターおよびクエリーパラメーターを使用します。
10.1.1. パスパラメーター(1 パラメーター):
Name | 説明 | デフォルト | Type |
---|---|---|---|
servicePath | Websocket エンドポイントに 必要な 名前 | 文字列 |
10.1.2. クエリーパラメーター(37 パラメーター):
Name | 説明 | デフォルト | Type |
---|---|---|---|
チャンク (共通) | このオプションが false の場合、サーブレットは HTTP ストリーミングを無効にし、応答に content-length ヘッダーを設定します。 | true | boolean |
disableStreamCache (common) | Servlet からの raw 入力ストリームがキャッシュされているかどうかを決定します(Camel はストリームをメモリー内/オーバーフローでファイル、ストリームキャッシング)キャッシュに読み取ります。デフォルトでは、Camel は Servlet 入力ストリームをキャッシュして、複数回ロードし、Camel がストリームからすべてのデータを取得できるようにします。ただし、raw ストリームにアクセスする必要がある場合などにこのオプションを true に設定します。たとえば、ファイルまたは他の永続ストアに直接ストリーミングする場合などに、raw ストリームにアクセスする必要がある場合などにこのオプションを true に設定します。DefaultHttpBinding は、ストリームの読み取りを複数回サポートするために、このオプションが false の場合は、リクエスト入力ストリームをストリームキャッシュにコピーし、メッセージボディーに配置します。Servlet を使用してエンドポイントをブリッジ/プロキシーする場合、このオプションを有効にしてパフォーマンスを向上することを検討してください。メッセージペイロードを複数回読み取る必要がない場合は、このオプションを有効にします。http/http4 プロデューサーは、デフォルトでは応答本体ストリームをキャッシュします。このオプションを true に設定すると、プロデューサーは応答ボディーストリームをキャッシュしませんが、応答ストリームをメッセージボディーとして使用します。 | false | boolean |
headerFilterStrategy (common) | カスタム HeaderFilterStrategy を使用して Camel メッセージに対してヘッダーをフィルターします。 | HeaderFilterStrategy | |
sendToAll (common) | all(ブロードキャスト)に送信するか、または単一のレシーバーに送信するか。 | false | boolean |
transferException (common) | 有効で Exchange がコンシューマー側で処理に失敗し、発生した例外が application/x-java-serialized-object のコンテンツタイプとして応答でシリアライズされたかどうか。プロデューサー側では、例外は HttpOperationFailedException ではなくデシリアライズされ、そのままスローされます。原因となる例外はシリアライズされている必要があります。これは、デフォルトではオフになっています。これを有効にすると、Java は受信データをリクエストから Java へデシリアライズし、潜在的なセキュリティーリスクとなる可能性があることに注意してください。 | false | boolean |
useStreaming (common) | ストリーミングがデータを複数のテキストフラグメントとして送信できるようにするには、以下を行います。 | false | boolean |
httpBinding (common) | カスタムの HttpBinding を使用して Camel メッセージと HttpClient 間のマッピングを制御する場合。 | HttpBinding | |
非同期 (コンシューマー) | 非同期モードで動作するようにコンシューマーを設定する | false | boolean |
bridgeErrorHandler (consumer) | コンシューマーの Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、コンシューマーが受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、コンシューマーは org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
httpMethodRestrict (consumer) | HttpMethod が一致する場合にのみ消費(GET/POST/PUT など)を許可するために使用されます。複数のメソッドはカンマで区切って指定できます。 | 文字列 | |
matchOnUriPrefix (consumer) | 完全一致がない場合、コンシューマーが URI プレフィックスに一致することでターゲットコンシューマーの検索を試行するかどうか。 | false | boolean |
responseBufferSize (consumer) | javax.servlet.ServletResponse でカスタムバッファーサイズを使用します。 | 整数 | |
servletName (consumer) | 使用するサーブレットの名前 | CamelServlet | 文字列 |
attachmentMultipartBinding (consumer) | マルチパート/フォームデータを Camel Exchange で添付として自動バインドするかどうか。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 を使用します。また、ththExceptionOnFailure オプションを 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 ヘッダーを現在のエクスチェンジ 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 から でなければなりません。 | 200-299 | 文字列 |
urlRewrite (producer) | 非推奨 の org.apache.camel.component.http.UrlRewrite への参照。ブリッジ/プロキシーエンドポイントの実行時に URL を書き換えることができるようになりました。詳細は、http://camel.apache.org/urlrewrite.htmlを参照してください。 | UrlRewrite | |
mapHttpMessageBody (advanced) | このオプションが true の場合、エクスチェンジの IN エクスチェンジボディーは HTTP ボディーにマッピングされます。false に設定すると HTTP マッピングが回避されます。 | true | boolean |
mapHttpMessageFormUrl EncodedBody (advanced) | このオプションが true の場合、エクスチェンジの IN Exchange Form Encoded body が HTTP にマッピングされます。これを false に設定すると、HTTP Form Encoded body マッピングを回避します。 | true | boolean |
mapHttpMessageHeaders (advanced) | このオプションが true の場合、エクスチェンジの IN エクスチェンジヘッダーは HTTP ヘッダーにマッピングされます。false に設定すると、HTTP ヘッダーのマッピングが回避されます。 | true | boolean |
同期 (詳細) | 同期処理を厳密に使用するか、Camel が非同期処理を使用できるようにするかを設定します(サポートされている場合)。 | false | boolean |
proxyAuthScheme (proxy) | 使用するプロキシー認証スキーム | 文字列 | |
proxyHost (proxy) | 使用するプロキシーホスト名 | 文字列 | |
proxyPort (proxy) | 使用するプロキシーポート | int | |
authHost (security) | NTML で使用する認証ホスト | 文字列 |