78.7. REST リクエストの使用 - デフォルトのバインディングスタイル


CXF JAXRS フロントエンドはJAX-RS (JSR-311) API を実装しているため、リソースクラスを REST サービスとしてエクスポートできます。また、CXF Invoker API を利用して、REST 要求を通常の Java オブジェクトメソッド呼び出しに変換します。Camel Restlet コンポーネントとは異なり、エンドポイント内で URI テンプレートを指定する必要はありません。JSR-311 仕様に従って、CXF が REST 要求 URI からリソースクラスメソッドへのマッピングを処理します。Camel で行う必要があるのは、このメソッドリクエストを適切なプロセッサーまたはエンドポイントに委任することだけです。

これは CXFRS ルートの例です…

private static final String CXF_RS_ENDPOINT_URI =
        "cxfrs://http://localhost:" + CXT + "/rest?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceResource";
private static final String CXF_RS_ENDPOINT_URI2 =
        "cxfrs://http://localhost:" + CXT + "/rest2?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerService";
private static final String CXF_RS_ENDPOINT_URI3 =
        "cxfrs://http://localhost:" + CXT + "/rest3?"
        + "resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceNoAnnotations&"
        + "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceModel.xml";
private static final String CXF_RS_ENDPOINT_URI4 =
        "cxfrs://http://localhost:" + CXT + "/rest4?"
        + "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
private static final String CXF_RS_ENDPOINT_URI5 =
        "cxfrs://http://localhost:" + CXT + "/rest5?"
        + "propagateContexts=true&"
        + "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
protected RouteBuilder createRouteBuilder() throws Exception {
    final Processor testProcessor = new TestProcessor();
    final Processor testProcessor2 = new TestProcessor2();
    final Processor testProcessor3 = new TestProcessor3();
    return new RouteBuilder() {
        public void configure() {
            errorHandler(new NoErrorHandlerBuilder());
            from(CXF_RS_ENDPOINT_URI).process(testProcessor);
            from(CXF_RS_ENDPOINT_URI2).process(testProcessor);
            from(CXF_RS_ENDPOINT_URI3).process(testProcessor);
            from(CXF_RS_ENDPOINT_URI4).process(testProcessor2);
            from(CXF_RS_ENDPOINT_URI5).process(testProcessor3);
        }
    };
}
Copy to Clipboard Toggle word wrap

そして、エンドポイントの設定に使用される対応するリソースクラス…

情報:*リソースクラスに関する注意*

デフォルトでは、JAX-RS リソースクラスは*JAX-RS プロパティーの設定にのみ使用されます。エンドポイントへのメッセージのルーティング中にメソッドが実行されることは*ありません。代わりに、すべての処理を行うのはルートの責任です。

Camel 2.15 以降では、デフォルトモードの no-op サービス実装クラスとは対照的に、インターフェイスのみを提供するだけでも十分であることに注意してください。

Camel 2.15 から、performInvocation オプションが有効になっている場合、サービス実装が最初に呼び出され、レスポンスが Camel エクスチェンジに設定され、ルートの実行が通常どおり続行されます。これは、既存の JAX-RS 実装を Camel ルートに統合する場合や、カスタムプロセッサーで JAX-RS レスポンスを後処理する場合に役立ちます。

@Path("/customerservice/")
public interface CustomerServiceResource {

    @GET
    @Path("/customers/{id}/")
    Customer getCustomer(@PathParam("id") String id);

    @PUT
    @Path("/customers/")
    Response updateCustomer(Customer customer);

    @Path("/{id}")
    @PUT()
    @Consumes({ "application/xml", "text/plain",
                    "application/json" })
    @Produces({ "application/xml", "text/plain",
                    "application/json" })
    Object invoke(@PathParam("id") String id,
                    String payload);
}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat