54.3. ghttp
ghttp コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
重要
GAE コンポーネントは非推奨となり、JBoss Fuse の今後のリリースで削除される予定です。
ghttp コンポーネントは、Google App Engine (GAE)の Camel コンポーネントに提供します。GAE URL フェッチサービス への接続を提供しますが、サーブレットからメッセージを受信するためにも使用できます(GAE で HTTP リクエストを受信する唯一の方法)。これは、Servlet コンポーネント を拡張することで実現されます。そのため、ghttp URI 形式およびオプションは、コンシューマー側の(からの)およびプロデューサー側の(から)とは異なります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| 形式 | コンテキスト | Comment |
|---|---|---|
ghttp:///path[?options]
|
コンシューマー | Servlet コンポーネントも参照してください。 |
ghttp://hostname[:port][/path][?options] ghttps://hostname[:port][/path][?options]
|
プロデューサー | Http コンポーネントも参照してください。 |
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | デフォルト値 | コンテキスト | 説明 |
|---|---|---|---|
bridgeEndpoint
|
true
|
プロデューサー |
true に設定すると、Exchange.HTTP_URI ヘッダーは無視されます。Exchange.HTTP_URI ヘッダーでデフォルトのエンドポイント URI を上書きするには、このオプションを false に設定します。
|
throwExceptionOnFailure
|
true
|
プロデューサー |
応答コードが >= 400 の場合は、org.apache.camel.component.gae.http を出力します。例外の出力を無効にするには、このオプションを false に設定します。
|
inboundBindingRef
|
GHttpBindingへの参照
|
コンシューマー |
エクスチェンジ のサーブレット API へのバインディングをカスタマイズするための 、レジストリー内の InboundBinding<GHttpEndpoint、HttpServletRequest、HttpServletResponse > への参照。参照バインディングは、org.apache.camel.component.http.HttpBinding への後プロセッサーとして使用されます。
|
outboundBindingRef
|
GHttpBindingへの参照
|
プロデューサー |
エクスチェンジ の URLFetchService へのバインディングをカスタマイズするための Registry の OutboundBinding<GHttpEndpoint, HTTPRequest, HTTPResponse > への参照。
|
コンシューマー側では、Servlet コンポーネント のすべてのオプションがサポートされます。
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロデューサー側では、Http コンポーネント の以下のヘッダーがサポートされます。
| 名前 | タイプ | 説明 |
|---|---|---|
Exchange.CONTENT_TYPE
|
文字列
|
HTTP コンテンツタイプ。は、in および out メッセージの両方で設定され、text/html などのコンテンツタイプを提供します。
|
Exchange.CONTENT_ENCODING
|
文字列
|
HTTP コンテンツエンコーディング。は、gzip などのコンテンツエンコーディングを提供するために in および out メッセージの両方に設定されます。
|
Exchange.HTTP_METHOD
|
文字列
|
実行する HTTP メソッド。GET、POST、PUT、DELETE のいずれか。設定されていない場合は、メッセージのボディーが null でない場合は POST が使用され、それ以外の場合はGET が使用されます。
|
Exchange.HTTP_QUERY
|
文字列
|
エンドポイント URI のクエリー部分または Exchange.HTTP_URI のクエリー部分(定義されている場合)を上書きします。クエリー文字列はデコードされた形式である必要があります。
|
Exchange.HTTP_URI
|
文字列
|
bridgeEndpoint オプションが false に設定されている場合には、デフォルトのエンドポイント URI を上書きします。URI 文字列はデコード形式である必要があります。
|
Exchange.RESPONSE_CODE
|
int
|
URL からの HTTP 応答コードは、サービス応答をフェッチします。 |
コンシューマー側で Servlet コンポーネントコンポーネント のすべてのヘッダーがサポートされます。
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロデューサー側で、のメッセージボディーは
byte[] に変換されます。out メッセージ本文は InputStream として利用できます。リポジトリーサイズが 1 メガバイトを超える場合、URL フェッチサービスによって ResponseTooLargeException が出力されます( クォータおよび制限を参照)。
メッセージの受信 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ghttp コンポーネント経由でメッセージを受信するには、CamelHttpTransportServlet を設定し、アプリケーションの web.xml でマッピングする必要があります( 「web.xml」を参照してください)。たとえば、http://<appname>.appspot.com/camel/* または http://localhost/camel/* (ローカル開発サーバーを使用する場合)でターゲットとする要求を処理するには、以下のサーブレットマッピングを定義する必要があります。
web.xml
エンドポイント URI パス定義は、このサーブレットマッピングに相対的です(例:ルート)。
from("ghttp:///greeting").transform().constant("Hello")
from("ghttp:///greeting").transform().constant("Hello")
http://<appname>.appspot.com/camel/greeting でターゲットとなる要求を処理します。この例では、リクエストボディーは無視され、応答ボディーが Hello に設定されています。http://<appname>.appspot.com/camel/greeting/* でターゲットとする要求は、デフォルトでは処理されません。これには、オプション matchOnUriPrefix を true に設定する必要があります。
from("ghttp:///greeting?matchOnUriPrefix=true").transform().constant("Hello")
from("ghttp:///greeting?matchOnUriPrefix=true").transform().constant("Hello")
メッセージの送信 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
外部 HTTP サービスに再起動を送信する場合、
ghttp コンポーネントは URL フェッチサービス を使用します。たとえば、Apache Camel のホームページは、プロデューサー側で以下のエンドポイント定義で取得できます。
from(...)
...
.to("ghttp://camel.apache.org")
...
from(...)
...
.to("ghttp://camel.apache.org")
...
使用される HTTP メソッドは、
Exchange.HTTP_METHOD メッセージヘッダーまたはインメッセージの本文の存在によって異なります( null の場合はGET、POST の場合は POST)。GAE アプリケーションを介した Camel ホームページの取得は、
from("ghttp:///home")
.to("ghttp://camel.apache.org")
from("ghttp:///home")
.to("ghttp://camel.apache.org")
GET リクエストを http://<appname>.appspot.com/camel/home に送信すると、Camel ホームページが返されます。外部サービスとの HTTPS ベースの通信は、ghttps スキームで有効にできます。
from(...)
...
.to("ghttps://svn.apache.org/repos/asf/camel/trunk/")
...
from(...)
...
.to("ghttps://svn.apache.org/repos/asf/camel/trunk/")
...
Dependencies リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を
pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-gae</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-gae</artifactId>
<version>${camel-version}</version>
</dependency>
${camel-version} は、実際のバージョンの Apache Camel (2.1.0 以降)に置き換える必要があります。