как отладить проблему, когда причина не известна - PullRequest
5 голосов
/ 29 августа 2011

Мы сталкиваемся со следующим исключением в weblogic server v10.3.2.0.Мы используем JRockit JRE 6.0.

В каждом запросе к серверу задействовано 6-7 источников данных XA.Мы сталкиваемся с этим исключением, когда только что начинается обработка последнего источника данных.

Пожалуйста, кто-нибудь посоветует.

java.sql.SQLException: Unexpected exception while enlisting XAConnection 
java.sql.SQLException: Transaction rolled back: setRollbackOnly called on transaction 
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1616) 
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1503) 
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446) 
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:403) 
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364) 
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init(JtaTransaction.java:68) 
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.getConnection(JtaTransaction.java:131) 
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493) 
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106) 
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:82) 

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Вы говорите, что это последний источник данных - вы читали это? : http://muness.blogspot.com/2005/09/distributed-transactions-and-timeouts.html.

Если вам нужна дополнительная информация, можете ли вы заменить ibatis версией на взломанную com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init ()? Добавьте туда логирование, и вы, вероятно, узнаете больше.

1 голос
/ 29 августа 2011

Если бы мне пришлось угадывать, я бы сказал, что последний источник данных не настроен должным образом как источник данных XA, не установлен драйвер XA или не поддерживает XA.

Делаете ли вы здесь какую-нибудь забавную обработку исключений, которая бы усекала стек (Catching re-throwing, но сохранял только верхний набор кадров стека) или использовали пользовательскую библиотеку обработки исключений? Если бы ты был, я бы отказался от этого. Кажется, что должен быть caused by: с дополнительным стеком нижнего уровня, связанным с драйверами вашего источника данных, который мог бы раскрыть дополнительную информацию.

Если это не так, и это единственная информация, которую вы получаете. Возможно, настало время увеличить регистрацию на вашем сервере до debug или trace и начать думать о том, как weblogic добивается цели ..

В качестве альтернативы, если вас поддержат, я бы проверил версии / конфигурации вашего драйвера у вашего поставщика. Если нет, вам нужно отследить документацию и убедиться в этом самостоятельно.

1 голос
/ 29 августа 2011

Как вы писали, причина в этом примере неизвестна.Мы можем видеть, что транзакция была помечена как «необходимо откатить», возможно, предыдущими источниками данных, когда что-то пошло не так.

Может быть, вы можете проверить предыдущие журналы на наличие предыдущего источника данных, чтобы найти причину?

...