ビジネスアプリケーションを Fuse ESB に統合する方法に本当に行き詰まっています。特に - Web サービス機能。いくつか質問があります -
1) Fuse ESB で blueprint.xml を Web サービスとして「ラップ」し、ビジネス アプリケーションから呼び出すことはできますか?
2) Fuse ESB を使用して、既存の機能を Web サービスとして公開し、呼び出すにはどうすればよいですか?
私を助けることができるかもしれないFuseの知識を持っている人に感謝します!
ビジネスアプリケーションを Fuse ESB に統合する方法に本当に行き詰まっています。特に - Web サービス機能。いくつか質問があります -
1) Fuse ESB で blueprint.xml を Web サービスとして「ラップ」し、ビジネス アプリケーションから呼び出すことはできますか?
2) Fuse ESB を使用して、既存の機能を Web サービスとして公開し、呼び出すにはどうすればよいですか?
私を助けることができるかもしれないFuseの知識を持っている人に感謝します!
さて、ここにそれを行う1つの方法があります。それは最善のアプローチではないかもしれません (コメントを歓迎します...) が、いずれにせよここにあります。
明らかに、Web サービスの wsdl と、ビジネス ロジックを実行するコードがあります。
cxf-codegen-plugin( for generated-sources) およびmaven-bundle-plugin( for bundle config および OSGI ワイヤリング)を使用して、Web サービス用の Maven モジュールを作成します。
あなたのblueprint.xml定義<camel-cxf:cxfEndpoint id="abc" ...でserviceClassは、生成されたエンドポイント インターフェイス クラスはどこにありますか。
拡張する定義した Bean を参照する a を使用して a を定義し<camel:camelContext id="abc" ...>ます。<camel:routeBuilder ref="xyz"/>RouteBuilder
を拡張するクラスで作業しますRouteBuilder。このconfigure()メソッドは、Web サービスの各操作に対応するキャメル ルートを設定する必要があります。Java fluent ビルダー構文を使用します。
流暢なビルダー構文の例を次に示します。
from("direct:myOperation")
.routeId("myOperation")
.onException(SomeException.class).doSomething().doSomethingElse();
.validate(/* an expression */)
.beanRef("myBusinessLogicBean", "someMethod")
.convertBodyTo(MyResult.class)
基本的に、ルーティング レイヤーを取り、キャメル ルートとして書き直しました。ビジネス ロジックはbeanRef、bean とその依存関係 (datasources / dao または persistence.xml など) が blueprint.xml で構成されている場所を介して呼び出されます。 .
流暢なビルダー構文で実行できる非常に優れた機能がいくつかあります。Googlecamel cxfで検索して、多くの例を参照してください。また、すべての EIP (エンタープライズ統合パターン) にもアクセスできます。
最後に、feature.xmlを使用する<bundle>を定義し、正しい<feature>依存関係 ( camel-cxf、camel-jpaなど) を定義する必要があります。
これがあなたが始めるのに役立つことを願っています.