我們有兩個oracle (兩臺物理機)的實例以及我們的應用程序的一個模式。 我們使用的是weblogic應用程序服務器。應用程序使用啓用了XA事務的數據源。java.sql.SQLException:無法在全局事務中使用本地事務提交
我有一個Bean管理EJB,我在那裏做 -
- 更新一些數據表,然後提交
- 提交Oracle作業
- 再次更新表中的一些數據,然後提交
這裏我得到錯誤 - java.sql.SQLException:不能在全局事務中使用本地事務提交。
奇怪的是,這個錯誤並不是在每次執行時都進行交換,它在7-8次執行中正在執行1次。
現在我的問題是
- 是什麼,如果我使用支持XA交易bean的意義管理的事務?
- 爲什麼它在每次執行中都沒有遇到?
謝謝。
下面是代碼 -
DataObject.updateDataAndReturnCount(" UPDATE EOD_Trn_BatchProcess SET iJobNo = ?, szParameters = ? WHERE iProcessSeqNo = ? ", conn, new String[]{null, strParameters, (String)mapParameters.get("__PROCESS_SEQ_NO")});
conn.commit();
String strStatement = "{? = call submitProcAsJob(?, ?)}";
//String strStatement = "begin ? := submitProcAsJob(?, ?); end;";
CallableStatement pStmt = conn.prepareCall(strStatement);
pStmt.registerOutParameter(1, OracleTypes.NUMBER);
pStmt.setObject(2, strJobName);
pStmt.setObject(3, strInstanceNo);
pStmt.execute();
vString strJobNo = pStmt.getString(1);
vpStmt.close();
DataObject.updateData(" UPDATE EOD_Trn_BatchProcess SET iJobNo = ?, szParameters = ? WHERE iProcessSeqNo = ? ", conn, new String[]{strJobNo, strParameters, (String)mapParameters.get("__PROCESS_SEQ_NO")});
conn.commit();
這裏第一次提交要求,因爲我要保存通話過程中使用的參數,即使作業提交失敗
什麼是事務屬性?你在代碼中調用了提交/回滾嗎?提供你的代碼,那應該更清楚 – 2013-03-20 01:49:48
代碼的加入,這個「事務屬性」是否代表XA數據源的配置? – JackNJill 2013-03-20 14:02:28
不,在ejb-jar.xml中,container-transaction-> trans-attribute – 2013-03-21 02:48:29