springmvc3注解+mybatis+JTA+jboss7.1下多个数据源配置(一)

终于配置好,内牛满面啊。

首先感谢咿呀网 的狼哥 本文部分配置是采用咿呀网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驱动有问题。也可能是我下载的版本太老,试了好久没成功。

 

最终采用了jboss7xa数据源配置 + 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+mybatisjta的事务配置

 

 

 

你可能感兴趣的:(springMVC)