1

我有一个查询:-

在我的 ESB 4.7.0 中,Dss 是 3.0.1

我希望将数据可靠地插入数据库,因为我从客户端获得了一个数组列表。我需要将该数组插入到 3 个不同的表中。每个表都给了我返回的生成密钥。这将有助于插入第二个表,第三个表的过程相同。为此,我使用 wso2dss 在 wso2esb 中使用 3 种不同的插入操作,插入进行得很好..

@我的问题是当我插入第二或第三表时,由于网络问题或任何数据相关问题而发生错误。在这种情况下,我的事务可能会回滚。我已经在事务调解器中完成了,但它在序列中很有帮助。它没有反映到任何其他序列,所以我怎么能这样做。为此,我可以使用任何类调解器或任何新事物。

4

3 回答 3

0

The transaction mediator is designed to cater the atomicity requirement. Since you are using insertion only without the involvement of deletion you can pass the primary key of inserted entry in the first table to a class mediator and delete but i think, in this case atomicity will not be guranteed. Therefore the concept of transaction is not achieved in this case.

于 2013-10-06T02:55:26.203 回答
0

由于您使用三种不同的操作,您可以使用 DSS boxcarring 功能以及 Query Request Export 功能,这使您能够以协调的方式进行交易。请参考这里看看如何使用 boxcarring 功能。它允许在 boxcarring 会话中执行的各个查询相互通信。这个概念是“导出”一个特定的结果元素,以便下一个调用查询将获得该结果元素作为查询参数。因此,如果您有两个查询,即在 boxcarring 会话中按顺序执行的“query1”和“query2”,并且如果“query1”具有特定的结果元素并且该元素以名称“foo”导出,则“ query2' 还获得一个名为 'foo' 的查询参数。所以当这个 boxcarring 会话被执行时,query1 的导出值将作为输入参数传递给 query2。

于 2013-10-08T02:02:59.527 回答
0

对于您的要求,理想的解决方案是使用 Boxcarring。Boxcarring 是一种将一组服务调用组合在一起并立即执行它们的方法。在适用的情况下,boxcarring 会话以事务方式工作,例如与 RDBMS 数据源一起使用时。“数据服务托管”功能通过在服务器端对服务调用进行分组来促进 boxcarring。因此,不需要特殊的服务客户端,并且像往常一样,可以对服务器进行连续的服务调用以参与 boxcarring 会话。

为了让 boxcarring 起作用,必须使用支持会话管理的传输,例如 HTTP。服务客户端还应该通过在服务器发送会话 cookie 时返回会话 cookie 来支持会话管理。Axis2 服务客户端完全支持会话管理。

请找到关于 boxcarring的WSO2 原始文档和这篇有用的博客文章,它逐步解释了如何使用 boxcarring。

于 2015-08-10T06:43:19.717 回答