2013-12-17 1 views
0

백엔드 클러스터 된 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> 

우리는 문제 아래에 직면하고있다 :

  1. 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

+0

wireshark 또는 유사한 도구를 사용하여 네트워크 추적을 받고 성공 사례와 실패 사례를 비교하는 것이 좋습니다. 두 서버가 동일하게 구성되지 않은 경우가 많습니다. – steve

답변

0

당신은 모르겠지만이 jdbc:mysql:loadbalance:jdbc:mysql: 교체 시도하십시오 수 없습니다. 두 번째 서버는 읽기 전용 대신 읽기/쓰기 권한으로 액세스 할 수 있어야합니다.

BR, 일리아

관련 문제