1

現在、SpringMVCを使用してRESTサービスを実装しています。これらのサービス実装のサブセットをSOAPとして公開する必要があります。

私はapacheキャメルのドキュメントを調べて、そのような直接的なサポートがあるかどうかを確認しました。ドキュメントから、ラクダはおそらくそれを行うことができるようですが、ApacheCXFを介して実装されたサービスに対してのみです。結論に飛び込む前に、SpringMVCで実装されたRESTサービスでも可能かどうかを知りたいと思います。

  • キャメルは、SpringMVCで実装されたRESTサービスをSOAPサービスとして公開することをサポートしていますか
  • はいの場合、いくつかのドキュメントを教えていただけますか。
  • そうでない場合は、SpringMVCで実装されたRESTサービスにSOAPラッパーを実装するための提案があります。
4

2 に答える 2

3

まず、SOAP と REST の間で自動的にプロキシする明確な方法がありません。

REST はデータ/リソース (すべての形状と色) に関するものであり、操作はほとんどありません。SOAP は XML で定義されたデータを使用した操作に関するものです。

ただし、Camel で SOAP メッセージを消費するのはかなり簡単です (たとえば、Spring WS を使用)。

次に、未加工の XML (XPATH または XSLT) を操作するか、JAXB を使用して Java オブジェクトに非整列化することでパフォーマンスを向上させることができます。これはかなり自動化されている可能性があります。(Spring WS、Camel、および JAXB の例については、http://camel.apache.org/spring-ws-example.html) を参照してください。また、maven-jaxb2-plugin を使用して、SOAP スキーマに基づく JAXB で Java オブジェクトを生成することもお勧めします。

次に、SOAP エンドポイント/メソッド/SOAP アクションを REST サービスにルーティングするために、ある種のルックアップ テーブルが必要です。これは、REST サービスの構造に大きく依存します。その後、Camel を使用して RESTful リソースを呼び出すのは簡単です。HTTP や REST など、好きなように考えてください。

考慮しなければならないこと、そしておそらくこのシナリオで最も重要な部分は、REST サービスが XML 以外のペイロード エンコーディング (JSON など) を備えているかどうかです。次に、XML と JSON の間のマッピングを行う必要があります。そのための実際の標準はありませんが、Camel はその作業を簡素化できます。Camel は、次のリリース 2.10 (https://issues.apache.org/jira/browse/CAMEL-4930) で自動変換も行う予定です。

于 2012-04-19T07:10:34.743 に答える
1

考えられるオプションの 1 つは、任意の ESB を使用し、REST API 用の SOAP インターフェイスを提供するプロキシを実装することだと思います。

基本的に、ESB は SOAP メッセージを受信するプロキシとして機能し、形式を REST に変換して既存の REST API と通信し、受信した応答を SOAP に変換してクライアントに応答します。

これは、ほとんどの ESB で非常に一般的な使用例です。Camel もそれを行うことができると確信しています。ただし、 UltraESBなどの他の ESB も調べて、まだ Camel に縛られていない場合は決定を下すことをお勧めします。

于 2012-04-19T03:05:44.257 に答える