在jboss下读取多个dbs

时间:2013-12-11 15:37:01

标签: java hibernate jpa jboss sharding

我有一个在Jboss AS 4.2.3上运行的j2EE应用程序,并且对mysql数据库有很多读取。

我想设置几个mysql实例,因此应用程序将能够决定联系哪个。 我们使用Hibernate作为ORM(完整的JPA支持)。

我一直在关注Hibernate Shards和OpenJPA - 但也许有另一种方法可以做到这一点?

有没有办法我们仍然可以使用JPA(所以我们不需要更改我们的代码)并将某种读取平衡作为提供者?

我可以在主机文件上提取一些技巧,使用短TTL的DNS - 但我正在寻找一个更简单的解决方案。

有一个吗?

只是为了确保,此时分片不是很有趣。只是阅读。

1 个答案:

答案 0 :(得分:0)

所以我最终做的是扩展mysql jdbc驱动程序并修改mysql-ds.xml文件。

在xml文件中,我将连接字符串更改为包含多个主机,并将:mysql:to:myjdbc:,并作为提供者输入我的类。

在扩展的JDBC驱动程序中

我必须在两个函数中解析连接字符串: 1. acceptedURL 2.连接

我的代码解析连接字符串,随机选择一台机器,并使用修改后的合法连接字符串调用超级函数。

它刚刚起作用! 如果mysql只读副本失败,则连接失败,并在下次尝试时选择另一台机器。

whooohooo!

你有什么意见吗?