REQUIRES_NEW и NOT_SUPPORTED - оба атрибута транзакции, которые предотвратили бы выполнение операции в текущей транзакции (которая была бы приостановлена, а затем возобновлена впоследствии). Источнику данных WebSphere Application Server известно о транзакциях, управляемых контейнерами, и они будут зачислены в них. Я не уверен, что такое BasicDataSource, но если он не знает о транзакциях с контейнерами, это может объяснить, почему вы видите разницу в поведении.
поток, чтобы вызвать один поток тупиковый может быть что-то вроде этого:
- транзакции начинают
- команду SQL, которая блокирует строки X
- вызвать REQUIRES_NEW метод
- предполагает сделка приостановить, новый начало транзакции
- SQL-команда, которая пытается заблокировать строку X < - тупик здесь
Если это то, что вы видите, оно работает как сконструированное по спецификации, и вам следует рассмотреть возможность использования другого атрибута транзакции, такого как SUPPORTS, если вы хотите, чтобы операция выполнялась в той же транзакции.
Возможно, у вас есть незавершенная работа из другой транзакции. Либо сделайте все это за один переход, совершите другой переход, либо измените блокировки. Если это не поможет, вам нужно будет предоставить более подробную информацию в своем вопросе. –