JPA / Eclipselink - 动态选择DataSource / JDBC URL

时间:2012-07-14 18:22:02

标签: java java-ee jpa eclipselink multi-tenant

有没有办法可以让JPA(特别是Eclipselink)根据绑定到当前线程的某些属性动态选择连接池?

我正在尝试解决的问题是扩展多租户系统,租户可能会分散在多个数据库实例上。每个数据库实例都是多租户的,但为了扩展,我可能无法轻松地将所有租户都放在一个数据库实例中。

我熟悉@Multitenant以支持单表多租户,并已成功使用Eclipselink会话事件回调来动态设置Eclipselink Session中的值。我正在尝试更改EntityManager将使用的DataSource的下一步,因此我不必使用群集数据库。

谢谢!

3 个答案:

答案 0 :(得分:0)

看看这个

http://code.google.com/p/jdbc-helper/wiki/LoadBalancingDataSource

它创建一个数据源,负载均衡到后端数据源。

答案 1 :(得分:0)

您可以使用EntitiyManagerFactory,允许为特定的datsasource创建EntitiyManager(通过String属性),如

中所述

http://foobar.lu/wp/2010/12/30/change-jpa-entitymanager-connection-properties-at-runtime/

答案 2 :(得分:0)

您可能需要查看this post。它可能会有所帮助或为您提供如何实现解决方案的线索。