解决方案 »

  1.   

    spring+hibernate的时候你一旦用事务管理器了,而且事务如果是在service层的时候,多数据源切换是没用的.事务绑定的是hibernate的sessionFactory,你得用多sessionFactory切换.不过不建议这样,既然多数据源了,最好的还是建议用分布式事务来管理楼主自己google下spring+hibernate+atomikos
      

  2.   

    但是我现在的项目写完的部分都是按原来的配置方法写的,数据源的切换放在了web service的接口类中。如果换成jotm的话,我原来写的就都要推倒重来了,请问2楼,按我现在的写法,能不能让数据源的切换在service层实现?
      

  3.   

    我上面说了service层交给事务管理了,而事务绑定的是sessionFactory,所以切换的不是数据源而是sessionFactory。之所以不建议这样做,因为我之前的WebService也是这样,因为数据库读写分离的原因,使用了多数据源。最初我也是想用sessionFactory切换,不过后面仔细的考虑了下,不应该这样用,因为service层可能同时操作多个sessionFactory进行操作,你根本不能确定此时应该切换哪个sessionFactory,真正能够确定该用哪个sessionFactory的只有DAO层才能确定,但是又因为事务在service层上所以如果用AOP在dao层无法切换sessionFactory。而且正确的业务逻辑本身就该用分布式事务。
      

  4.   

    我上面说了service层交给事务管理了,而事务绑定的是sessionFactory,所以切换的不是数据源而是sessionFactory。之所以不建议这样做,因为我之前的WebService也是这样,因为数据库读写分离的原因,使用了多数据源。最初我也是想用sessionFactory切换,不过后面仔细的考虑了下,不应该这样用,因为service层可能同时操作多个sessionFactory进行操作,你根本不能确定此时应该切换哪个sessionFactory,真正能够确定该用哪个sessionFactory的只有DAO层才能确定,但是又因为事务在service层上所以如果用AOP在dao层无法切换sessionFactory。而且正确的业务逻辑本身就该用分布式事务。谢谢您,那我考虑考虑用分布式事务吧。
      

  5.   


    您好,我在google上查了下spring+hibernate+atomikos分布式事务管理,然后自己试着配置了下,但是在启动tomcat服务器的时候报异常:
    No properties path set - looking for transactions.properties in classpath...
    transactions.properties not found - looking for jta.properties in classpath...

    能不能请您帮我分析一下?我又发了个帖子:http://bbs.csdn.net/topics/390734681,这里边是问题的详细描述。