我已经看了几个在Jboss 7中为MySQL配置数据源的例子。我看到的所有元素参考如下:
<driver name="com.mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
我知道<driver-class>
是什么,但<xa-datasource-class>
到底是什么,它的目的是什么?
之前在Tomcat上配置数据源时,我不需要为任何数据库指定xa数据源。为什么这里不同?
感谢
根据jdbc4.0规范(12.2):XA数据源生成能够在全局/分布式事务中使用的XA连接。如果您需要一个事务来跨越多个数据库或JMS调用,则可能需要这样的连接。你可以在这里找到对这个概念的清晰解释:http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95346
如果您没有这样的分布式事务场景,则不需要指定xa数据源,一个简单的数据源配置就足够了。因此,如果使用简单的数据源,那么在声明驱动程序时就不需要指定xa数据源类。
<datasources>
<datasource jndi-name="java:/myDatasource" pool-name="MyDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:mysql://localhost:3306/mydb
</connection-url>
<driver>
mysql
</driver>
<transaction-isolation>
TRANSACTION_READ_COMMITTED
</transaction-isolation>
<pool>
<min-pool-size>
5
</min-pool-size>
<max-pool-size>
10
</max-pool-size>
<prefill>
true
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
username
</user-name>
<password>
password
</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql"/>
</drivers>
</datasources>