2017-02-11 94 views
0

使用websphere數據源連接SQL-SERVER彈簧事務掛起(鎖定)與REQUIRES_NEW或NOT_SUPPORTED播放。使用Websphere數據源使用事務掛起掛起的連接

當使用BasicDataSource或任何其他時,情況並非如此。

請幫忙。

+0

也許您從另一筆交易中收到未提交的工作。要麼一次完成所有操作,要麼執行另一個操作,要麼更換鎖。如果這沒有幫助,你需要在你的問題中提供更多的細節。 –

回答

0

REQUIRES_NEW和NOT_SUPPORTED都是事務屬性,它們會阻止在當前事務中運行操作(該操作將暫停,然後再恢復)。 WebSphere Application Server數據源知道容器管理的事務,並將加入它們。我不確定BasicDataSource是什麼,但是如果它不知道容器事務,這可以解釋爲什麼你看到行爲上的差異。

流動造成單線程死鎖可能是這樣的:

  • 交易開始即鎖定行X
  • 調用REQUIRES_NEW方法
  • SQL命令意味着交易暫停,新的事務開始
  • 嘗試鎖定行X的SQL命令< - 此處的死鎖

如果這是您所看到的,它按照設計,按照規範運行,並且您應該考慮使用不同的事務屬性,例如SUPPORTS,如果您希望該操作在同一事務中運行。