2017-03-03 8 views
0

Je dois gérer les transactions avec les applications OSGI sous Karaf (j'utilise ServiceMix 7.0). Toute la logique est sous la route de chameau. D'abord, je reçois des requêtes Web et les traite en route, effectue des transformations et ensuite je dois lancer la transaction: appelez storedProcedures dans Oracle, appelez un autre service Web et si l'appel au service web est réussi, je dois valider l'invocation de procédure stockée. . Peut utiliser des transactions gérées par conteneur comme dans EJB ou JTA. Camel ne dispose pas de composants hors de la boîte pour appeler la procédure stockée. J'utilise donc org.springframework.jdbc.object.StoredProcedure. Et maintenant je ne sais pas comment faire de l'invocation SP avec un contexte transactionnel.comment configurer route camel pour l'utilisation des transactions avec la base de données

Répondre

1

Voici ce que vous pouvez faire:

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

Vous aurez aussi besoin d'ajouter TransactionManager au contexte.

<!-- 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> 

Pour plus de détails sur le composant SQL Camel stockée proc se référer à: http://camel.apache.org/sql-stored-procedure.html

+0

il est très intéressant. Je ne connais même pas le composant sql-stored. C'est cool. Je vais essayer. Merci! – Maciavelli

+0

J'ai mis à jour mon camel à la version 2.17.5 Mais quand j'essaye d'invoquer SP il me donne l'erreur: Causée par: org.apache.camel.component.sql.stored.template.generated.ParseException: Rencontré "" "" "" à la ligne 1, colonne 35. je me attendais un des: ... ... – Maciavelli

+0

Ce mon invokation John <à uri =" sql-stored: BONJOUR (VARCHAR $ {headers.test}, OUT VARCHAR outparam1)? dataSource = oracleDataSource "/> – Maciavelli