백엔드 클러스터 된 MySQL 서버 (마스터 - 마스터 구성) 용 JBoss 7.1.1 응용 프로그램 서버에 XA 데이터 소스를 구성합니다.MySQL 클러스터 용 JBoss 7.1.1에서 XA 데이터 소스 생성 : 연결 읽기 전용 오류
<xa-datasource jndi-name="java:/datasoucrenew" pool-name="datasoucrenew" enabled="true" use-ccm="false">
<xa-datasource-property name="URL">
jdbc:mysql://10.2.0.35:3306,10.2.0.36:3306/test_prod?autoReconnect=true
</xa-datasource-property>
<xa-datasource-property name="password">
password
</xa-datasource-property>
<xa-datasource-property name="user">
user
</xa-datasource-property>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<driver>mysql-connector-java-5.1.12-bin.jar</driver>
<xa-pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>100</max-pool-size>
<use-strict-min>true</use-strict-min>
<is-same-rm-override>false</is-same-rm-override>
<interleaving>false</interleaving>
<pad-xid>false</pad-xid>
<wrap-xa-resource>false</wrap-xa-resource>
</xa-pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter"/>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</xa-datasource>
우리는 문제 아래에 직면하고있다 :
- DB의 URL의 JDBC에서있다 : mysql : 다음은 데이터 소스 구성입니다 //10.2.0.35 : 3306,10.2.0.36 : 3306/test_prod autoReconnect = 사실, 10.27.40.35 서버가 다운되면 예외가 발생합니다. 하지만 URL을 jdbc : mysql : //10.2.0.36 : 3306,10.2.0.35 : 3306/test_prod? autoReconnect = true로 바꾸면 제대로 작동합니다. 이 문제의 원인을 파악하는 데 도움을 주시기 바랍니다.
처음에는 이것이 드라이버 문제라고 생각했습니다. 그러나 동일한 드라이버를 사용하여 독립 실행 형 응용 프로그램을 실행했을 때 문제없이 작동했습니다.
12:06:08,782 ERROR [stderr] (MSC service thread 1-1) com.mysql.jdbc.jdbc2.optional.MysqlXAException: **Connection is read-only. Queries leading to data modificati
on are not allowed.**
12:06:08,784 ERROR [stderr] (MSC service thread 1-1) at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java
:607)
12:06:08,788 ERROR [stderr] (MSC service thread 1-1) at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:586)
12:06:08,790 ERROR [stderr] (MSC service thread 1-1) at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.start(MysqlXAConnection.java:526)
12:06:08,793 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.start(XAManagedConnection.java:259)
12:06:08,796 ERROR [stderr] (MSC service thread 1-1) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.j
ava:636)
12:06:08,799 ERROR [stderr] (MSC service thread 1-1) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.j
ava:397)
12:06:08,802 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.enlist(
TxConnectionListener.java:587)
12:06:08,806 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:2
64)
12:06:08,809 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnec
tionManagerImpl.java:467)
12:06:08,813 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractCon
nectionManager.java:599)
12:06:08,817 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionM
anager.java:467)
12:06:08,819 ERROR [stderr] (MSC service thread 1-1) at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
12:06:08,821 ERROR [stderr] (MSC service thread 1-1) at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceCon
참고 : 우리는 21 또는 24 또는 27에 오류가 아래에 제공되는 최신 버전으로 MySQL의 커넥터 - 자바-5.1.12-bin.jar를 MySQL의 드라이버를 사용하고 있습니다 :
java.lang.ClassCastException: $Proxy0 cannot be cast to com.mysql.jdbc.ConnectionImpl
Completed
at com.mysql.jdbc.jdbc2.optional.MysqlXADataSource.wrapConnection(MysqlXADataSource.java:76)
at com.mysql.jdbc.jdbc2.optional.MysqlXADataSource.getXAConnection(MysqlXADataSource.java:52)
이 문제를 해결할 답변을 주셔서 감사합니다.
감사합니다,
Manjunath
wireshark 또는 유사한 도구를 사용하여 네트워크 추적을 받고 성공 사례와 실패 사례를 비교하는 것이 좋습니다. 두 서버가 동일하게 구성되지 않은 경우가 많습니다. – steve