研究有結果了,以下是我做了一些測試得出的結論(Sybase+Weblogic+Tx Data Source):
方法一:
1、設置方法為Container-Tracnsaction,方法的trans-attribute為Required
2、幾個方法調用的SP創建前先set chained on,同時SP裡是可以使用Tracnsaction的
3、此方法調用的幾個方法使用同一Connection,Connection的setAutoCommitCommit使用默認設置或設為false,若設為true,則拋出異常:Cannot set auto commit to "true" when in distributed transaction
方法二:
1、設置方法為Container-Tracnsaction,方法的trans-attribute為Required
v2、幾個方法調用的SP創建前先set chained on,同時SP裡是可以使用Tracnsaction的
3、此方法調用的幾個方法使用各自的Connection,各方法Connection的setAutoCommitCommit使用默認設置;若設為true,則拋出異常:Cannot set auto commit to "true" when in distributed transaction;
若某方法設為false,同時在EJB的方法描述裡把此方法的設置方法為Container- Tracnsaction,方法的trans-attribute為Required, 則執行到此方法時會拋出異常:SET CHAINED command not allowed within multi-statement transaction.
方法三:
1、設置方法為Container-Tracnsaction,方法的trans-attribute為Required
2、同時各方法為Container-Tracnsaction,方法的trans-attribute為Required
3、幾個方法調用的SP創建前先set chained on,同時SP裡是可以使用Tracnsaction的
4、此方法調用的幾個方法使用各自的Connection,各方法Connection的setAutoCommitCommit使用默認設置;若設為true,則拋出異常:Cannot set auto commit to "true" when in distributed transaction;若設為false,拋出異常:SET CHAINED command not allowed within multi- statement transaction.