2017-03-03 5 views
0

KarafのOSGIアプリケーションとのトランザクションを処理する必要があります(私はServiceMix 7.0を使用しています)。すべての論理はラクダのルートの下にあります。 まず、Webリクエストを受け取ってルートで処理し、変換を行い、次にトランザクションを開始する必要があります。Oracleでコールストアドプロシージャを呼び出し、別のWebサービスをコールします。 。 EJBやJTAのようにコンテナ管理のトランザクションを使用している可能性があります。 Camelには、ストアドプロシージャを呼び出すためのデフォルトのコンポーネントがありません。だから私はorg.springframework.jdbc.object.StoredProcedureを使用しています。そして今、私はトランザクションコンテキストでSPを呼び出す方法を知らない。ここでデータベースとのトランザクションを使用するためにラクダルートを設定する方法

答えて

1

は、あなたが何ができるかです:

from("direct:mainRoute") 
    .transacted() 
    .to("direct:invokeService") 
    .to("sql-stored:SUBNUMBERS(INTEGER ${headers.num1},INTEGER ${headers.num2},OUT INTEGER resultofsub) 

はまた、コンテキストにトランザクションマネージャーを追加する必要があります。キャメルSQLストアドプロシージャコンポーネントの詳細については

<!-- spring transaction manager --> 
<!-- this is the transaction manager Camel will use for transacted routes --> 
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

を参照してください:それは非常に興味深いです http://camel.apache.org/sql-stored-procedure.html

+0

。私はSQLのコンポーネントが格納されていることは知らない。カッコイイです。やってみます。ありがとう! – Maciavelli

+0

私のラクダをバージョン2.17.5にアップデートしましたが、SPを起動しようとするとエラーが発生します:原因:org.apache.camel.component.sql.stored.template.generated.ParseException: "" "" 行1、列35 での1期待していた: ... ... – Maciavelli

+0

この私のinvokationを<ヘッダ名のsetHeader = "テスト"> INFO ジョン Maciavelli

関連する問題