请教:spring配置mysql/access多数据源的动态切换问题,急用,十分感谢!

问题描述

请教:spring配置mysql/access多数据源的动态切换问题,急用,十分感谢!

请教:spring配置mysql/access多数据源在切换到access数据源时抛No Session found for current thread错误是怎么回事?请大侠详加指导,十分感谢,急用!我的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd" default-autowire="byName" default-lazy-init="false">
<!-- 自动扫描dao和service包(自动注入) -->

<!-- 加载service,此时要排除要controller,因为controller已经spring-mvc中加载过了 -->

/context:component-scan

<!-- 引入属性文件 -->

<!-- 配置数据源1 -->

<!-- 初始化连接大小 -->

<!-- 连接池最大使用连接数量 -->

<!-- 连接池最大空闲 -->

<!-- 连接池最小空闲 -->

<!-- 获取连接最大等待时间 -->

<!-- -->

    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="25200000" />

    <!-- 打开removeAbandoned功能 -->
    <property name="removeAbandoned" value="true" />
    <!-- 1800秒,也就是30分钟 -->
    <property name="removeAbandonedTimeout" value="1800" />
    <!-- 关闭abanded连接时输出错误日志 -->
    <property name="logAbandoned" value="true" />
<!-- 数据源2 :  access数据源 -->
<bean id="accessDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" />
    <property name="url" value="jdbc:odbc:users" />
    <property name="username" value="" />
    <property name="password" value="" />
</bean>
 <!-- access sessionFactory -->
<bean id="aceessSessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="accessDataSource" />
    <property name="hibernateProperties">
        <props>
            <!-- access 语法和MSSQL相似 所以用的MSSQL方言,或者可以使用第三方方言 -->
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
            <prop key="hibernate.jdbc.batch_size">30</prop>
            <prop key="hibernate.jdbc.fetch_size">50</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

<!-- 数据源集合 -->

${hibernate.dialect}
${hibernate.hbm2ddl.auto}
true
true
false

<!-- 注解方式配置 -->

system.pojo.*
demo.entity.*
test.entity.*
test.bussiness.db.UserInfo

<bean id="accessTransactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="aceessSessionFactory"></property>
</bean>

<tx:advice id="txAdvice" transaction-manager="accessTransactionManager">
    <tx:attributes>
        <tx:method name="exists" read-only="true" />
        <tx:method name="save*" propagation="REQUIRED" />
        <tx:method name="add*" propagation="REQUIRED" />
        <tx:method name="create*" propagation="REQUIRED" />
        <tx:method name="insert*" propagation="REQUIRED" />
        <tx:method name="update*" propagation="REQUIRED" />
        <tx:method name="merge*" propagation="REQUIRED" />
        <tx:method name="del*" propagation="REQUIRED" />
        <tx:method name="remove*" propagation="REQUIRED" />
        <tx:method name="put*" propagation="REQUIRED" />
        <tx:method name="use*" propagation="REQUIRED" />
        <tx:method name="get*" propagation="REQUIRED" />
        <tx:method name="count*" propagation="REQUIRED" read-only="true" />
        <tx:method name="find*" propagation="REQUIRED" read-only="true" />
        <tx:method name="list*" propagation="REQUIRED" read-only="true" />
        <tx:method name="*" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>

/aop:config

<!-- 配置事物管理器,在*ServiceImpl里写@Transactional就可以启用事物管理 -->

时间: 2025-01-21 04:12:13

请教:spring配置mysql/access多数据源的动态切换问题,急用,十分感谢!的相关文章

Spring AOP从入门到放弃之多数据源读写动态切换

项目中如果需要由多个数据源,比如3个,一个主两个从.主库主要是写操作,两个从库做读操作. 那么在spring boot中怎么使用AOP判断程序是读还是写,并且分配到不同的数据源中呢? 本文重要是 的代码是使用 spring boot .druid.mybatis.mybatis plus等技术做支持的. 逻辑步骤 大概的逻辑为, 1.引入durid 2.配置三个数据源,1个写,2个读,两个从库实现简单的负载功能. 3.配置mybatis 4.配置mybatis plus 5.配置aop 6.定义

spring3-spring配置mysql的时候有个奇怪的问题

问题描述 spring配置mysql的时候有个奇怪的问题 如下这么写就没问题 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource"/> 但是如下这么写 <bean id="jdbcTemplate" class="org.springframew

ssh 多数据源问题!-spring多数据源动态切换问题

问题描述 spring多数据源动态切换问题 一个总公司托管了N个子公司,每个子公司对应自己的数据库,我的程序实现每个子公司根据用户名登录的时候,只访问自己的数据库,而且公司的数目还在增加,这就涉及到了动态切换多数据源的问题!,还涉及到多个用户登录的时候的并发问题!急求解决,谢谢! 解决方案 目前很多项目中只能配置单个数据源,那么如果有多个数据源肿么办?Spring提供了一个抽象类AbstractRoutingDataSource,为我们很方便的解决了这个问题.1.写一个DynamicDataSo

spring配置多数据源t junit测试报错

问题描述 spring配置多数据源t junit测试报错 Error creating bean with name 'seentao.workflow.engine.EngineTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: publi

spring mvc-springmvc配置mysql哪里错了,求大神帮忙

问题描述 springmvc配置mysql哪里错了,求大神帮忙 db.properties: driver=com.mysql.jdbc.Driver url=jdbc:mysql://114.215.207.30:3306busticket?useUnicode=true&characterEncoding=UTF-8 username=PBDB password=PBDB springmvc-servlet.xml: <?xml version="1.0" encod

Spring+Mybatis多数据源配置(四)——AbstractRoutingDataSource实现数据源动态切换

有时候需要在程序中动态切换数据源,那么这个系列的之前的博文所阐述的方法就不再使用了,总不能通过程序更改config.properties文件的dataSource的值,然后再重启web服务器以便加载applicationContext.xml文件.这里讲诉的是如何利用AbstractRoutingDataSource进行数据源动态切换. 首先上applicationContext.xml文件: <?xml version="1.0" encoding="UTF-8&qu

JBoss AS7配置MySQL数据源

AS7默认的数据源是H2,虽然H2方便,但是一般的生产环境都是MySQL.ORACLE.SQLServer居多,本文描 述如何在AS7配置MySQL数据源. 根据Jboss社区的文档,配置一个新的数据源大致分为两步.描述如 下: 加入JDBC驱动文件 在JBOSS_HOME/modules目录下加入如下目录结构及文件: JBOSS_HOME +- modules +- com +- mysql +- main +- module.xml +- mysql-connector-java-5.1.1

请教怎么配置springmvc+spring+mybatis的事务,手动控制的

问题描述 请教怎么配置springmvc+spring+mybatis的事务,手动控制的 请教怎么配置springmvc+spring+mybatis的事务,手动控制的 解决方案 mybatis spring事务配置spring整合mybatis之事务配置 解决方案二: 呵呵 事务如果不配置 默认 就是需要手动使用的吧 既然你要手动的 那就不配置就行了, 如果已经配置了 事务一般都是 xml配置 或者注解,取消注解,或者xml中取消匹配方法的配置不就行了

spring 配置数据源出问题

问题描述 spring 配置数据源出问题 spring 配置数据源的时候org下面划红线提示<statement>expectedgot 'org' closep:driverClassNamep:username等都报错Attribute p:driverclassname is not allowed here 已经解决,重新装了软件 解决方案 请检查你的 p:driverclassname属性值是否正确