2
我們在Glassfish中使用無狀態會話bean。我有以下問題。我們的方法默認支持事務,也就是說,事務從業務方法起點開始,並在出口點提交(或回滾)。因此,讓我們假設我有這樣的代碼:在事務修復之前,連接返回到池會發生什麼?
public void businessMethod() {
Connection conn;
try {
conn = getConnectionFromPool();
// Do some queries to the database
} finally {
if (conn != null) conn.close(); // Line A
// Line B
}
}
所以會發生什麼,在A線是我不要隨便關閉連接,它只是返回到連接池,但該方法的事務未提交然而。只有在B行完成後才能完成。但是由於連接返回到池中,這意味着在此方法提交(或回滾)之前,其他人可以使用相同的連接啓動事務。
那麼接下來會發生什麼?一個池中的連接是否對其他人不可用,直到該方法完成該事務爲止?或者第二筆交易是否會阻止,直到第一筆交易結束?我使用MySQL作爲數據庫。
我一定要關閉這樣的連接,否則就不會返回到池中。但是,如何將它與事務性方法結合起來,以便我不直接指定事務邊界?
您開始提出問題,詢問機制如何工作的一般問題,但是您的最後一段意味着您遇到某種需要知道其工作原理的問題。爲什麼您的應用程序對應用程序服務器的連接池是如何工作的?你是什麼意思「將它與事務性方法結合起來」(使用EJB時沒有其他選擇)? –