我會盡量詳細的把所遇到的問題,以及解決方案貼出來,至於具體的代碼清參見胡長城的jta的相關文章。裏面有詳細的敘述。
問題一:在4啓動jboss無法獲得jndi連接,並且不能ie訪問:請修改啓動腳本:./run.sh -b 192.168.1.4 -Djboss.bind.adress=0.0.0.0
問題二:可以獲得jndi連接,但是context.lookup時會找不到配置好的數據源:檢查數據源配置文件中是否有如下片段:<use-java-context>false</use-java-context>
問題三:如何配置oracle-xa-ds?xa是好東西,但也是有代價的:你需要在jboss所跑的主機安裝oracle client所以我在4上安裝了oracle-client。並且在啓動jboss的時候要確保環境變量:LD_LIBRARY_PATH=$ORACLE_HOME/lib如果你遇到的異常i
綜上,我的jboss啓動腳本如下:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# export PATH=$ORACLE_HOME/bin:$PATH
./run.sh -b 192.168.1.4 -Djboss.bind.adress=0.0.0.0
# ./run.sh -Djboss.bind.adress=0.0.0.0
因爲oci驅動不像jdbc那樣是純正的java寫的驅動,或者說是類型4的jdbc驅動;他是類型2的驅動,也就是需要c作底層的通訊,因此我們需要指定環境量LD_LIBRARY_PATH;告訴java到哪裏去找c寫的代碼。
問題四:sqlserver2000的配置問題:sqlserver2000是我大學時候用的數據庫,工作之後就在也沒有用到過,今天使用起來好像回到了大學時代。呵呵,扯遠了。java使用sqlserver2000需要jdbc,需要jdbc則需要sp4。也就是sqlserver2000的sp4包。另外推薦使用microsoft sqlserver2005 jdbc 驅動比較好,該驅動雖然叫2005但,向下兼容sqlserver2000並且如果你想用xa你只能用該驅動老的jdbc 2000不支持xa。具體安裝方法自己google之。
問題五:在執行UserTransaction.begin()遇到:UT factory lookup failed。呵呵恭喜你,你裏成功不遠了。把org.jnp.interfaces.NamingContextFactory改成:org.jboss.naming.NamingContextFactory參加:http://www.jboss.org/community/docs/DOC-12476
低級失誤:忘記拷貝oracle jdbc 和 sqlserver jdbc到jboss/server/default/lib
沒有把jboss-clientall.jar引入客戶端程序。
參考資料:
http://blog.csdn.net/james999/archive/2006/09/25/1281070.aspx
http://www.jboss.org/community/docs/DOC-12476
http://read.newbooks.com.cn/info/175508.html
http://database.e800.com.cn/articles/2007/620/1182276890521451751_1.html
[color=red]這篇文章寫的很雜,我的感覺就像是trouble shooting。如果還有什麼問題我沒有涉及到,很希望你能夠跟帖或者通知我,另外一點,我很懷疑xa事物的可靠性,所以如果哪位在實際工作當中用到了jta希望你能夠跟下貼,讓哥們開開眼。[/color]