2013-10-04 92 views
1

兩個或多個表我有一個查詢: -插入與WSO2 ESB與DSS

在我的ESB 4.7.0,DSS是3.0.1

我希望將數據插入到可靠的數據庫,爲此我從客戶端獲取一個數組列表。 該數組我需要插入到3個不同的表。每個表給我返回生成的key.which將有助於插入到 第2表,相同的過程爲第3表。 這個我使用wso2dss使用wso2esb 3個不同的插入操作,插入是很好的發生..

@my問題是當我插入第二或第三臺已發生因網絡問題或任何錯誤數據相關問題。 在這種情況下,我的交易可能會回滾。我已經在交易中介中完成了交易,但它對於序列中的交易很有幫助。 它不反映到任何其他序列,所以我怎麼能做到這一點。因此,我可以使用任何類調解器或任何新的東西。

回答

0

交易仲裁器是爲滿足原子性要求而設計的。既然你只使用插入而不需要刪除,你可以將第一個表中插入條目的主鍵傳遞給類中介,然後刪除,但我認爲在這種情況下,原子性不會被保證。因此,在這種情況下交易的概念並未實現。

0

由於您使用的是三種不同的操作,因此您可以使用DSS boxcarring功能以及查詢請求導出功能,這使您可以以協調的方式進行交易。請參閱this以瞭解如何使用boxcarring功能。它允許在boxcarring會話中執行的單個查詢相互通信。這個概念是'導出'一個特定的結果元素,以便下一個調用查詢將獲得該結果元素作爲查詢參數。因此,如果您有兩個查詢,即在查詢會話中按順序執行的'query1'和'query2',並且'query1'具有特定結果元素並且該元素以名稱'foo'導出,則' query2'也會得到一個名爲'foo'的查詢參數。所以當這個boxcarring會話執行時,query1的導出值將作爲輸入參數傳遞給query2。

+0

但是,如何在不知道它時指定這個ID到下一個查詢? – zygimantus

0

對於您的要求,理想的解決方案是使用Boxcarring。 Boxcarring是將一組服務調用分組在一起並立即執行它們的一種方法。適用時,boxcarring會話以事務處理方式工作,例如與RDBMS數據源一起使用時。 「數據服務託管」功能通過在服務器端對服務呼叫進行分組來簡化插入。因此,不需要特殊的服務客戶端,並且像往常一樣,可以對服務器進行連續的服務呼叫以參與盒裝會話。

爲了實現boxcarring功能,必須使用支持會話管理(如HTTP)的傳輸。當服務器發送時,服務客戶端還應該通過返回會話cookie來支持會話管理。 Axis2服務客戶端全面支持會話管理。

請在boxcarring上找到WSO2 original documentation,並在this useful blog post上找到解釋如何逐步使用boxcarring。