你的sessionfactory 还是最开始那个。
你新加的spring配置文件只配置了一个数据源,sessionFactory没变。你需要创建不同的sessionFactory。
根据数据源来创建。

解决方案 »

  1.   

    sessionFactory没有改变,需要在生成一个sessionFactory,多数据源还要考虑事物的问题,tomcat对多数据源事物支持不是太好
      

  2.   

    你说的对,但是总是创建sessionFactory也不是一个 好办法呀 
      

  3.   

    这个问题已经解决了,请看我的这篇文章,有问题共同学习进步   http://blog.csdn.net/qilin18/article/details/17614005
      

  4.   

    又看到一个在spring里使用ThreadLocal作为路由数据源实现方式的案例。
    这种实现在普通情况下确实能通过取当前线程实现数据源的定位,但是如果应用存在使用spring事务的情况,这么做就是在挖地雷。
    因为spring推荐的scope prototype模式下bean都是单例,并发的时候依靠spring内部的ThreadLocal切换各个线程的参数,而spring的事务机制会针对每一个事务新开一个线程,最后导致在有事务的情况下,spring内部的事务线程和自定义路由使用的数据源定位线程不一致,数据源定位失败。
    表现出来的现象就是,一个有spring事务的servcie里,无法调用两个数据源,无论怎么配置都会导致数据源被路由到同一个线程。
      

  5.   

    spring事务里没有解决这个问题,spring保护了内部的ThrealLocal,如果要基于spring事务,我只能想到连scope的线程实现都重写一遍,这对一般人来说是不可能的。
    所以我的解决办法是不采用spring事务,换用自己控制的事务,我是换用的jta事务。