1

ActiveMQをCXFにブリッジする実用的な例を知っている人はいますか?WebServiceをメッセージキューに接続する例をたくさん見ましたが、逆に必要です。JMSキューからのメッセージはWebサービスに転送され、結果は呼び出し元に返されます。

私の最初のアプローチは、1つのメソッドを公開するWebサービスに対してのみ機能します。

from("activemq:wsa").to("cxf:bean:webServiceA");

Status msg = producerTemplate.requestBody("activemq:wsa", params, Status.class); 

ただし、複数のメソッドを持つWebサービスの場合、同様の呼び出しによりExchangeTimedOutExceptionが発生します。

Map<String, Object> header = new HashMap<String, Object>(); 
header.put(CxfConstants.OPERATION_NAME, "doSomething"); 
header.put(CxfConstants.OPERATION_NAMESPACE, "http://.../"); 

Status msg = producerTemplate.requestBodyAndHeaders("activemq:wsb", params, header, Status.class); 

それでも、リクエストはWebサービスに転送され、正解が返されることがわかります。しかし、残念ながら、それは帰り道で迷子になります。

ヒントや外部リソースへのリンクをいただければ幸いです。

よろしく、ヤコブ

4

2 に答える 2

0

この問題は、Web サービスが、シリアライズ可能なインターフェースを実装していないクラスのオブジェクトを返す場合に発生します (これらのクラスがシリアライズ可能であっても)。

シリアライズ可能なインターフェースを実装すると、問題が解決します。

于 2012-10-18T10:08:48.520 に答える
0

ActiveMQ と JMS の呼び出しはデフォルトで一方向です。同期するように指定することもできます。

http://camel.apache.org/jms.html#JMS-RequestreplyoverJMS

それ以外は、ActiveMQ を CXF プロデューサーのスターターとして使用することも同じです。

Camel のソースをダウンロードして、次のフォルダーを調べることをお勧めします。

\components\camel-cxf\src\test\java\org\apache\camel\component\cxf

(または Web: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/ )

参考資料として参照できる大量の CXF プロデューサー テスト ケースが用意されています。

于 2012-10-18T05:38:27.197 に答える