2017-02-11 2 views
0

При использовании источника данных websphere для подключения весенней транзакции SQL-SERVER, получившей повешение (заблокировано) с помощью REQUIRES_NEW или NOT_SUPPORTED.Соединение, связанное с использованием приостановки транзакции с источником данных Websphere

Это не тот случай, когда используется источник BasicDataSource или любой другой.

Пожалуйста, помогите.

+0

Возможно, у вас есть незавершенная работа из другой транзакции. Либо сделайте все это за один переход, совершите другой переход, либо измените блокировки. Если это не поможет, вам нужно будет предоставить более подробную информацию в своем вопросе. –

ответ

0

REQUIRES_NEW и NOT_SUPPORTED - оба атрибута транзакции, которые предотвратили бы выполнение операции в текущей транзакции (которая была бы приостановлена, а затем возобновлена ​​впоследствии). Источнику данных WebSphere Application Server известно о транзакциях, управляемых контейнерами, и они будут зачислены в них. Я не уверен, что такое BasicDataSource, но если он не знает о транзакциях с контейнерами, это может объяснить, почему вы видите разницу в поведении.

поток, чтобы вызвать один поток тупиковый может быть что-то вроде этого:

  • транзакции начинают
  • команду SQL, которая блокирует строки X
  • вызвать REQUIRES_NEW метод
  • предполагает сделка приостановить, новый начало транзакции
  • SQL-команда, которая пытается заблокировать строку X < - тупик здесь

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

Смежные вопросы