项目采用的事务由于IBatis的事务可能不能满足项目的需求,项目中采用EJB3.0的中间件服务(事务管理,持久化,消息,安全性,群集等)替代IBatis的事务操作。项目中采用JBoss的连接池,需要在JBoss添加相关的连接池文件。
在JBoss的服务器中添加
JBoss的配置如下
数据源用于配置数据库的连接的信息,每一个数据源必须指定一个唯一的JNDI名称,应用通过JNDI名称查找数据库源。默认的数据源DefaultDS,它使用Jboss内置的HSQLDB数据源。每一种数据库配置的模板在可以参考[Jboss安装目录]\docs\examples\jca目录中找到,名称为:数据库名+-ds.xml.
数据库配置文件的取名格式必须为xxx-ds.xml,其中xxx代表任意名称。
数据源部署前,必须把数据库驱动jar拷贝到[Jboss安装目录]/sever/配置的名(默认default)/lib目录。
将数据源部署文件拷贝到[Jboss安装目录]/sever/配置的名(默认default)/deploy目录,容器遇到以*-ds.xml结尾的文件时,会进行动态发布。发布完成之后可以通过:http://localhost:8080/jmx-console查看。
选择jboss.jca/jboss.jdbc查看数据源的信息:
在连接池管理(ManagedConnectionPool)中进入连接池属性修改界面中,MaxSize为最大连接数,InUseConnectionCount代表目前正在使用的连接数。一旦正用大于最大连接数,后面发起的数据库连接将会报错误。
不同的数据源的数据库配置不一样,可以参考模板修改。
在Ibatis配置文件SqlMapConfig.xml中配置如下:
<!-- JNDI JBOSS连接池配置 -->
<transactionManager commitRequired="true" type="EXTERNAL">
<property name="DefaultAutoCommit" value="false"/>
<property name="SetAutoCommitAllowed" value="false"/>
<dataSource type="JNDI">
<property name="DataSource" value="${xxxds}" />
<property name="context.java.naming.factory.initial" value="${initial}" />
<property name="context.java.naming.factory.url.pkgs" value="${pkgs}" />
<property name="context.java.naming.provider.url" value="${url}" /> </dataSource>
</transactionManager>
此处必须注意的commitRequired=“true”type=”External” 设置事务类型为外部事务。
总结:纵观当前的各种Ibatis的架构中Ibatis的事务大多使用外部事务并且采用容器级别的事务作为保障。如EJB事务和Spring的事务。由容器实现事务配置化管理。