Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jboss下读取多个数据库_Java_Hibernate_Jpa_Jboss_Sharding - Fatal编程技术网

Java 在jboss下读取多个数据库

Java 在jboss下读取多个数据库,java,hibernate,jpa,jboss,sharding,Java,Hibernate,Jpa,Jboss,Sharding,我有一个j2EE应用程序,它在JBossAS 4.2.3上运行,对mysql数据库有很多读取 我想再设置几个mysql实例,这样应用程序就可以决定联系谁了。 我们使用Hibernate作为ORM(完全支持JPA) 我一直在研究Hibernate碎片和OpenJPA,但也许还有其他方法可以做到这一点 有没有一种方法可以让我们仍然使用JPA(这样我们就不需要更改代码)并使用某种读平衡作为提供程序 我可以在主机文件上使用一些技巧,使用带有短TTL的DNS,但我正在寻找一个更简单的解决方案 有吗 为了确

我有一个j2EE应用程序,它在JBossAS 4.2.3上运行,对mysql数据库有很多读取

我想再设置几个mysql实例,这样应用程序就可以决定联系谁了。 我们使用Hibernate作为ORM(完全支持JPA)

我一直在研究Hibernate碎片和OpenJPA,但也许还有其他方法可以做到这一点

有没有一种方法可以让我们仍然使用JPA(这样我们就不需要更改代码)并使用某种读平衡作为提供程序

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

有吗


为了确保这一点,切分并不有趣。阅读。

因此,我最终做的是扩展mysql jdbc驱动程序并修改mysql-ds.xml文件

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

在我扩展的JDBC驱动程序中,我必须在两个函数中解析连接字符串: 1.承兑人 2.连接

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

它真的起作用了! 如果mysql读取副本失败,则连接失败,并且在下一次尝试时选择另一台机器

呜呜

你有什么意见吗