277.6. サンプル
277.6.1. 認証付き Restlet エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
次のルートは、http://localhost:8080 で POST
リクエストをリッスンする restlet
コンシューマーエンドポイントを開始します。プロセッサーは、リクエストの本文と id
ヘッダーの値をエコーするレスポンスを作成します。
URI クエリーの restletRealm
設定は、レジストリーでレルムマップを検索するために使用されます。このオプションが指定されている場合、restlet コンシューマーはこの情報を使用してユーザーのログインを認証します。認証された リクエストのみがリソースにアクセスできます。このサンプルでは、レジストリーとして機能する Spring アプリケーションコンテキストを作成します。Realm Map の Bean ID は restletRealmRef と一致する必要があります。
次のサンプルでは、http://localhost:8080 上のサーバーにリクエストを送信する direct
エンドポイント (つまり、restlet コンシューマーエンドポイント) を開始します。
必要なのはそれだけです。リクエストを送信して、restlet コンポーネントを試す準備ができました。
サンプルクライアントは、次のヘッダーを含むリクエストを direct:start-auth
エンドポイントに送信します。
-
CamelRestletLogin
(Camel によって内部的に使用されます) -
CamelRestletPassword
(Camel によって内部的に使用されます) -
id
(アプリケーションヘッダー)
org.apache.camel.restlet.auth.login
および org.apache.camel.restlet.auth.password
は、Restlet ヘッダーとして伝播されません。
サンプルクライアントは、次のようなレスポンスを受け取ります。
received [<order foo='1'/>] as an order id = 89531
received [<order foo='1'/>] as an order id = 89531
277.6.2. 複数のメソッドと URI テンプレートを提供する単一の restlet エンドポイント (非推奨) リンクのコピーリンクがクリップボードにコピーされました!
この機能は 推奨されていない ため、使用しないでください。
restletMethods
オプションを使用して、複数の HTTP メソッドにサービスを提供する単一のルートを作成することができます。このスニペットは、ヘッダーからリクエストメソッドを取得する方法も示しています。
複数のメソッドを提供することに加えて、次のスニペットは、restletUriPatterns
オプションを使用して複数の URI テンプレートをサポートするエンドポイントを作成する方法を示しています。リクエスト URI は、IN メッセージのヘッダーでも使用できます。URI パターンがエンドポイント URI で定義されている場合 (このサンプルではそうではありません)、エンドポイントで定義された URI パターンと restletUriPatterns
オプションの両方が受け入れられます。
restletUriPatterns=#uriTemplates
オプションは、Spring XML 設定で定義された List<String>
Bean を参照します。
<util:list id="uriTemplates"> <value>/users/{username}</value> <value>/atom/collection/{id}/component/{cid}</value> </util:list>
<util:list id="uriTemplates">
<value>/users/{username}</value>
<value>/atom/collection/{id}/component/{cid}</value>
</util:list>
277.6.3. Restlet API を使用して応答を設定する リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.8 から利用可能
org.restlet.Response
API を使用して応答を入力することをお勧めします。これにより、Restlet API に完全にアクセスし、応答をきめ細かく制御できます。インライン Camel プロセッサーからの応答を生成する以下のルートスニペットを参照してください。
Restlet Response API を使用したレスポンスの生成
277.6.4. コンポーネントの最大スレッドの設定 リンクのコピーリンクがクリップボードにコピーされました!
最大スレッドオプションを設定するには、次のようにコンポーネントでこれを行う必要があります。
<bean id="restlet" class="org.apache.camel.component.restlet.RestletComponent"> <property name="maxThreads" value="100"/> </bean>
<bean id="restlet" class="org.apache.camel.component.restlet.RestletComponent">
<property name="maxThreads" value="100"/>
</bean>
277.6.5. webapp 内で Restlet サーブレットを使用する リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.8 以降で利用可能
サーブレットコンテナー内で Restlet アプリケーションを設定するには 3 つの方法 があり、サブクラス化された SpringServerServlet を使用すると、Restlet コンポーネントを注入することで Camel 内で設定できます。
サーブレットコンテナ内で Restlet サーブレットを使用すると、URI の相対パスでルートを構成し (ハードコードされた絶対 URI の制約を取り除く)、ホストするサーブレットコンテナが (新しいポートで別のサーバープロセスを生成する必要がなく) 入力リクエストを処理することができます。
前提条件
Maven pom.xml ファイルの restlet に Spring 拡張機能への依存関係を追加する必要があります。
<dependency> <groupId>org.restlet.jee</groupId> <artifactId>org.restlet.ext.spring</artifactId> <version>${restlet-version}</version> </dependency>
<dependency> <groupId>org.restlet.jee</groupId> <artifactId>org.restlet.ext.spring</artifactId> <version>${restlet-version}</version> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
Restlet アプリケーションを設定するには、camel-context.xml に以下を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を web.xml に追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
結果
デプロイされたルートには http://localhost:8080/mywebapp/rs/demo/1234
でアクセスできます。ここで、localhost:8080
はサーバーとサーブレットコンテナーのポート、mywebapp
はデプロイされた Web アプリケーションの名前です。
ブラウザーには次のコンテンツが表示されます。
"Request type : GET and ID : 1234"
"Request type : GET and ID : 1234"