在jdbc中,XAConnection和Connection是沒有繼承關系的,在jms中XAConnection是繼承Connection接口的。同樣XADataSource和Datasource也是相應的關系。
我們在使用jdbc時,如果是managed datasource,配置在配置文件中,如在oc4j data-sources.xml中,有下面這段配置:










但是在java代碼我們使用時,是這樣的:




lookup出來的DataSource的實現類是:oracle.sql.oc4j.ManagedDataSource,它是實現DataSource接口的,和XADataSource無關,然后get出來的是Connection和XAConnection無關,但是拿它做操作確是和XAConnection的效果相同,說明拿出來的可能是一個dynamic proxy,它是實現Connection接口,完成XAConnection的功能。為什么要這樣做呢,就是方便我們通過配置文件更改,修改了配置文件,從xa到非xa,從非xa到xa,代碼不需要重修修改。所以只能都拿出Connection來了。但是如果XAConnection繼承Connection接口,這樣拿出來的即使是Connection,通過多態我們不更好理解嗎? 為什么當初寫規范時,不讓 XADataSource繼承DataSource,讓XAConnection繼承Connection呢?
posted on 2008-10-31 21:33 叱咤紅人 閱讀(650) 評論(0) 編輯 收藏 所屬分類: J2SE and JVM 、Other Java and J2EE frameworks