关于JDBC的XAConnection不继承Connection的困惑

在jdbc中,XAConnection和Connection是没有继承关系的,在jms中XAConnection是继 承Connection接口的。同样XADataSource和Datasource也是相应的关系。

我们在使用jdbc时,如果是managed datasource,配置在配置文件中,如在oc4j data-sources.xml中,有下面这段配置:

        

但是在java代码我们使用时,是这样的:

DataSource dataSource = (DataSource) context              .lookup(jdbc/mifXAStatusLog);Connection connection = dataSource.getConnection();

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 呢?

但是至少可以为自己的荷包省钱可以支些招,这点还是很现实的。

关于JDBC的XAConnection不继承Connection的困惑

相关文章:

你感兴趣的文章:

标签云: