如何配置骆驼路线以使用数据库事务
how to configure camel route for using transactions with database
我需要在 Karaf 下处理 OSGI 应用程序的事务(我使用的是 ServiceMix 7.0)。所有逻辑都在骆驼路线下。
首先,我收到 Web 请求并在路由中处理它,进行转换,然后我需要开始事务:在 Oracle 中调用 storedProcedures,调用另一个 Web 服务,如果对 Web 服务的调用成功,我需要提交存储过程调用,否则回滚。可能正在使用 EJB 或 JTA 中的容器管理事务。
Camel 没有用于调用存储过程的现成组件。所以我使用 org.springframework.jdbc.object.StoredProcedure。现在我不知道如何使用事务上下文进行 SP 调用。
您可以执行以下操作:
from("direct:mainRoute")
.transacted()
.to("direct:invokeService")
.to("sql-stored:SUBNUMBERS(INTEGER ${headers.num1},INTEGER ${headers.num2},OUT INTEGER resultofsub)
您还需要将 TransactionManager 添加到上下文中。
<!-- 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>
关于Camel SQL stored proc 组件的更多细节请参考:
http://camel.apache.org/sql-stored-procedure.html
我需要在 Karaf 下处理 OSGI 应用程序的事务(我使用的是 ServiceMix 7.0)。所有逻辑都在骆驼路线下。 首先,我收到 Web 请求并在路由中处理它,进行转换,然后我需要开始事务:在 Oracle 中调用 storedProcedures,调用另一个 Web 服务,如果对 Web 服务的调用成功,我需要提交存储过程调用,否则回滚。可能正在使用 EJB 或 JTA 中的容器管理事务。 Camel 没有用于调用存储过程的现成组件。所以我使用 org.springframework.jdbc.object.StoredProcedure。现在我不知道如何使用事务上下文进行 SP 调用。
您可以执行以下操作:
from("direct:mainRoute")
.transacted()
.to("direct:invokeService")
.to("sql-stored:SUBNUMBERS(INTEGER ${headers.num1},INTEGER ${headers.num2},OUT INTEGER resultofsub)
您还需要将 TransactionManager 添加到上下文中。
<!-- 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>
关于Camel SQL stored proc 组件的更多细节请参考: http://camel.apache.org/sql-stored-procedure.html