這方面的資料太少了, 最終在一個IBM的網頁上找到。html
首先要先讓Oracle 打開XA功能,能夠經過如下幾步實現 :java
1) 在SQLPLUS(必定要用這個工具) 中,用Oracle 的系統管理員用戶 SYSOPER 或 SYSDBA登陸你的數據庫(由於這個用戶能夠得到最多的訪問權限)。web
2)找到<Oracle 安裝目錄>\javavm\install 目錄下,有兩個腳本initxa.sql 和 initjvm.sql,將它們所在的完整路徑分別複製到已登陸的SQLPLUS環境下(注:在windows下目錄分隔符應由"\"改成"/")執行該腳本。格式如:@d :/initxa.sql 。 sql
注意:當執行這兩個腳本時,可能會執行失敗,這時須要修改兩個Oracle的系統參數(文件放在<Oracle 安裝目錄>\database\init<實例 SID>.ora),數據庫
參數名稱 | 最小值 |
java_pool_size |
12000000 |
shared_pool_size |
24000000 |
修改完後,須要從新啓動Oracle實例才能生效。windows
3) 設置當前數據庫訪問用戶的權限:oracle
grant select on DBA_PENDING_TRANSACTIONS to <當前用戶> grant select on pending_trans$ to <當前用戶>; grant select on dba_2pc_pending to <當前用戶>; grant execute on dbms_xa to <當前用戶>; --(若是使用Oracle 10.2.0.4 或高版本的JDBC driver時)
4) 從新啓動數據實例。app
5)用須要的操做用戶登陸數據庫驗證權限是否生效。jvm
JBOSS 實例端的設置工具
1) 複製對應版本的數據庫的JDBC 驅動庫(.jar)文件到實例的LIB目錄下。
2) 從JBOSS的XA樣例模板中複製一份Oracle 的XA配置 ,到對應的數據源配置文件中
如:
<xa-datasource> <jndi-name>jdbc/rrr</jndi-name> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> <xa-datasource-property name="URL">jdbc:oracle:thin:@xxxx:xxx:333</xa-datasource-property> <xa-datasource-property name="User">33</xa-datasource-property> <xa-datasource-property name="Password">22</xa-datasource-property> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --> <metadata> <type-mapping>Oracle10g</type-mapping> </metadata> </xa-datasource>
總結:Oracle 的XA特性是利用 JAVA驅動庫調用 事務啓動、事務回滾、事務提交和事務結束等存儲過程方法(具體能夠參考 驅動包的代碼:oracle.jdbc.xa.OracleXAResource--反編譯出來的),而這些存儲過程又是Oracle 本地JVM的類方法。
參考資料: