我们使用的是MySql 5.5.37和JBoss 7.1.3,以及mysql-connector-java-5.1.22-bin.jar。如何配置JBoss的standalone.xml数据源以连接到MySQL的主从配置?我尝试了下面的
<datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql:replication//master.amazonaws.com:3306,slave.amazonaws.com:3306/dbsid?failOverReadOnly=true;roundRobinLoadBalance=true</connection-url>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>sb</user-name>
<password>sb</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.ReplicationDriver</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
但是当我重新启动服务器时,我得到了例外......
Caused by: javax.resource.ResourceException: Wrong driver class [class com.mysql.jdbc.Driver] for this connection URL [jdbc:mysql:replication//master.amazonaws.com:3306,slave.amazonaws.com:3306/dbsid?failOverReadOnly=true;roundRobinLoadBalance=true]
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:256)
... 47 more
我打开了我的JAR并验证了ReplicationDriver类在那里。不确定我还应该尝试什么。
答案 0 :(得分:2)
对我而言,这有效:
<driver name="com.mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
答案 1 :(得分:1)
不知道为什么我在搞乱xa-datasource-class元素,但对我有用的是
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.ReplicationDriver</driver-class>
</driver>
答案 2 :(得分:0)
根据connect-url选择驱动程序实现。
如果你指定一个这样的连接URL:&#34; jdbc:mysql:replication //.. 34 ;, MySQL connector / J返回ReplicationDriver实现。
如果将驱动程序类设置为com.mysql.jdbc.ReplicationDriver,则所有数据源都将解码为&#34;复制URL&#34;并且必须始终包含主服务器和至少一个服务器。
我认为最好通过网址自定义(复制,负载均衡,结构......)选择正确的实现。