spring+hibernate+web service配置多数据源

gsmiao 2014-03-13 11:04:44
我项目的框架用的是spring+hibernate+axis2。在项目的开发当中需要用到两个数据库,我配置了多数据源的切换,但是用
DataSourceContextHolder.setDataSourceType(DataSourceConst.TMS_STRING);这行代码切换数据源的时候,把这行代码写在web service的接口类中是数据源可以切换,但是把这行代码写在service层,然后在web service的接口类中调用service层的方法的时候,数据源就切换不过去了。
请各位大神给指点迷津。
...全文
160 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gsmiao 2014-03-18
  • 打赏
  • 举报
回复
引用 2 楼 suciver 的回复:
spring+hibernate的时候你一旦用事务管理器了,而且事务如果是在service层的时候,多数据源切换是没用的.事务绑定的是hibernate的sessionFactory,你得用多sessionFactory切换.不过不建议这样,既然多数据源了,最好的还是建议用分布式事务来管理楼主自己google下spring+hibernate+atomikos
您好,我在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,这里边是问题的详细描述。
gsmiao 2014-03-13
  • 打赏
  • 举报
回复
引用 6 楼 suciver 的回复:
[quote=引用 4 楼 miao1726584751 的回复:] 但是我现在的项目写完的部分都是按原来的配置方法写的,数据源的切换放在了web service的接口类中。如果换成jotm的话,我原来写的就都要推倒重来了,请问2楼,按我现在的写法,能不能让数据源的切换在service层实现?
我上面说了service层交给事务管理了,而事务绑定的是sessionFactory,所以切换的不是数据源而是sessionFactory。之所以不建议这样做,因为我之前的WebService也是这样,因为数据库读写分离的原因,使用了多数据源。最初我也是想用sessionFactory切换,不过后面仔细的考虑了下,不应该这样用,因为service层可能同时操作多个sessionFactory进行操作,你根本不能确定此时应该切换哪个sessionFactory,真正能够确定该用哪个sessionFactory的只有DAO层才能确定,但是又因为事务在service层上所以如果用AOP在dao层无法切换sessionFactory。而且正确的业务逻辑本身就该用分布式事务。[/quote] 谢谢您,那我考虑考虑用分布式事务吧。
suciver 2014-03-13
  • 打赏
  • 举报
回复
引用 4 楼 miao1726584751 的回复:
但是我现在的项目写完的部分都是按原来的配置方法写的,数据源的切换放在了web service的接口类中。如果换成jotm的话,我原来写的就都要推倒重来了,请问2楼,按我现在的写法,能不能让数据源的切换在service层实现?
我上面说了service层交给事务管理了,而事务绑定的是sessionFactory,所以切换的不是数据源而是sessionFactory。之所以不建议这样做,因为我之前的WebService也是这样,因为数据库读写分离的原因,使用了多数据源。最初我也是想用sessionFactory切换,不过后面仔细的考虑了下,不应该这样用,因为service层可能同时操作多个sessionFactory进行操作,你根本不能确定此时应该切换哪个sessionFactory,真正能够确定该用哪个sessionFactory的只有DAO层才能确定,但是又因为事务在service层上所以如果用AOP在dao层无法切换sessionFactory。而且正确的业务逻辑本身就该用分布式事务。
Bumpking 2014-03-13
  • 打赏
  • 举报
回复
以前尝试过做切点切换数据源。
gsmiao 2014-03-13
  • 打赏
  • 举报
回复
但是我现在的项目写完的部分都是按原来的配置方法写的,数据源的切换放在了web service的接口类中。如果换成jotm的话,我原来写的就都要推倒重来了,请问2楼,按我现在的写法,能不能让数据源的切换在service层实现?
gsmiao 2014-03-13
  • 打赏
  • 举报
回复
我就是配置了两个数据源呀,操作不同的数据库的时候,切换到对应的数据源
suciver 2014-03-13
  • 打赏
  • 举报
回复
spring+hibernate的时候你一旦用事务管理器了,而且事务如果是在service层的时候,多数据源切换是没用的.事务绑定的是hibernate的sessionFactory,你得用多sessionFactory切换.不过不建议这样,既然多数据源了,最好的还是建议用分布式事务来管理楼主自己google下spring+hibernate+atomikos
放纵的青春 2014-03-13
  • 打赏
  • 举报
回复
不知道你为什么要这么做 你完全可以配2个数据源 要用哪个拿哪个啊 切什么呢

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧