2014-10-07 73 views
0

我需要調用Web服務,並且需要將響應插入到具有序列作爲關鍵字的DB父表中。此外,我需要選擇剛剛插入的序列號,並將數據插入到兩個子表中。這怎麼可能實現?我可以在事務中執行所有插入操作,但是我需要在第一次插入父表之後執行select操作來獲取序列。任何幫助將不勝感激。JDBC選擇序列

回答

0

您可以通過將所有呼叫包裝到交易中來實現此目的。有幾種可用的異常策略,但它聽起來像一個簡單的回滾策略會適用於你。如果事務塊中的任何調用都會生成異常,則會觸發異常策略。請記住,如果您希望Web服務調用在失敗時引發異常,則需要檢查狀態代碼並生成異常(如果它不符合您的期望)。

<transactional action="ALWAYS_BEGIN" doc:name="Transactional"> 

     <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="getSequenceNumber" queryTimeout="-1" connector-ref="myConnector" doc:name="Database"> 
      <jdbc-ee:transaction action="BEGIN_OR_JOIN" /> 
     </jdbc-ee:outbound-endpoint> 
     <http:outbound-endpoint exchange-pattern="request-response" host="${webServiceHost}" 
      port="${webServicePort}" 
      path="${webServicePath}" 
      method="GET" doc:name="HTTP"> 
     </http:outbound-endpoint> 

     <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="createRecord" queryTimeout="-1" connector-ref="myConnector" doc:name="Database"> 
      <jdbc-ee:transaction action="BEGIN_OR_JOIN" /> 
     </jdbc-ee:outbound-endpoint> 

     <rollback-exception-strategy doc:name="Rollback Exception Strategy" /> 
    </transactional> 

你可以在這裏閱讀更多關於更多的交易:http://www.mulesoft.org/documentation/display/current/Transaction+Management