终于配置好,内牛满面啊。
首先感谢咿呀网 的狼哥 本文部分配置是采用咿呀网cms606配置而来
www.yy606.com (咿呀网)
www.mn606.com (全新改版)
最近项目使用到了多个多种数据库,所以专门配置了一下jboss,然后使用springmvc3+mybatis 注解结合jta+xa-datasource 多数据源,支持分布式数据库
核心需求:实现service 可以作用于多个数据源
这种多数据源的应用,我使用了JTA, jta是分布式事务(我也不知道。。。),网上百度到的例子很多,很多,但是大多数是使用jotm 和atomikos。
jotm 和atomikos 都是为了让tomcat支持jta协议标准而发明的框架。
jotm是利用spring2的支持:org.springframework.transaction.jta.JotmFactoryBean 但是 这种方式已经在spring3里取消了,听说是有了更好的支持(本人英文太菜了,没找到)
atomikos 我也试了下,貌似oracle驱动有问题。也可能是我下载的版本太老,试了好久没成功。
最终采用了jboss7的xa数据源配置 + springmvc3+mybatis注解
首先我采用的jboss版本是jboss-as-7.1.0.Final (不知道是不是免费的)
jboss7版本 配置数据源使用了modules模块化的配置。
这种配置........百度ing 比我讲解的好
我直接说操作步骤了
这个是oracle的
在modules里建立这样的目录
我的路径: D:\jboss-as-7.1.0.Final\modules\com\oracle\ojdbc6\main
这个路径下,需要有2个文件 一个是驱动jar包,一个是需要新建的文件module.xml
ojdbc6.jar (这个驱动是11g里面的)
module.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6"> <resources> <resource-root path="ojdbc6.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
注意:曾经找到过一篇博文,说是需要再建一个ojdbc6.jar.index 文件,其实这个是不需要的,这个index文件是jboss自己生成的,不要自己手动建立
这里已经为jboss添加了oracle驱动的模块
下面开始注册数据源
打开文件
我的是:D:\jboss-as-7.1.0.Final\standalone\configuration\standalone.xml
找到datasources节点
然后在里面加入下面节点
<xa-datasource jndi-name="java:/oracle119" pool-name="oracle119" enabled="true" use-java-context="false"> <xa-datasource-property name="URL"> jdbc:oracle:thin:@//192.168.10.119:1521/orcl </xa-datasource-property> <xa-datasource-property name="User"> yswsj </xa-datasource-property> <xa-datasource-property name="Password"> yswsj123 </xa-datasource-property> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> <driver>oracle</driver> <xa-pool> <is-same-rm-override>false</is-same-rm-override> <no-tx-separate-pools>true</no-tx-separate-pools> </xa-pool> </xa-datasource>
然后在下面的节点drivers 里面再加入一个driver节点,这个时候你会发现已经有一个driver了,我们要添加的是和这个同级别的节点
<driver name="oracle" module="com.oracle.ojdbc6"> <driver-class>oracle.jdbc.OracleDriver</driver-class> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> </driver>
千万不要放错了
在xa-datasource 节点里 有个属性是drive里面的值oracle
就是下面配置的driver的属性<driver name="oracle" ,module的值其实就是我们在modules里的路径
这个时候可以启动下jboss看看,只要驱动没放错位置,应该不会出问题。
下面开始配置mysql, 这个网站上的资料很多,不过也比较杂,幸运的是我从官网找到一个配置,经过测试,ok
下面上配置
首先,还是设置加入module模块
我的路径:
D:\jboss-as-7.1.0.Final\modules\com\mysql\main
里面要放入一个驱动包 mysql5.1 还要新建一个module.xml文件
mysql-connector-java-5.1.15-bin.jar
module.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-5.1.15-bin.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
一样不需要建立index文件
再次打开文件
D:\jboss-as-7.1.0.Final\standalone\configuration\standalone.xml
添加xa-datasource节点和driver
standalone.xml内容:
<xa-datasource jndi-name="java:jboss/mysql127" pool-name="mysql127" enabled="true"> <xa-datasource-property name="ServerName"> 127.0.0.1 </xa-datasource-property> <xa-datasource-property name="DatabaseName"> demo1 </xa-datasource-property> <driver>mysql</driver> <security> <user-name>root</user-name> <password>root123</password> </security> <validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> </validation> </xa-datasource>
driver的配置:
<driver name="mysql" module="com.mysql"> <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> </driver>
启动jboss之后 后台会输入jboss的数据源加载情况,基本上不报错就ok了
14:57:23,668 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/mysql127]
14:57:23,668 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source [java:/oracle119]
下一章继续 说springmvc+mybatis和jta的事务配置