[英]Why There Is No Need To Open A New Thread When Opening A Socket Connection In iOS
[英]Cannot open a new connection because existing connection is still on current thread - ActiveJDBC
我收到此錯誤, Cannot open a new connection because existing connection is still on current thread
一段時間后Cannot open a new connection because existing connection is still on current thread
。 我認為該錯誤很容易解釋。 我的代碼是這樣的:
字符串mySQLUrl =“ jdbc:postgresql://” + dataLayer.PostgreSQL_Host +“ /” + dataLayer.PostgreSQL_Database;
Base.open(“ org.postgresql.Driver”,mySQLUrl,dataLayer.getPostgreSQLUser(),dataLayer.getPostgreSQLPassword());
為了避免該錯誤,我想創建一個連接工廠,但是要實現此目的,我需要知道如何驗證是否打開了一個連接(並且仍然有效)並返回它,否則,請創建它。 是否有內置的東西或我應該使用舊的嘗試捕獲器? :|
如果遇到此異常,則意味着在打開新線程時,當前線程上仍具有連接。 這種類型的代碼可能會導致連接泄漏,因此框架會阻止您這樣做。
此頁面: http : //javalite.io/database_connection_management#thread-connection-propagation解釋了模型在當前線程上找到了連接 。
由於您沒有為您的應用程序提供任何上下文,因此我將舉幾個示例。
如果這是批處理應用程序(獨立應用程序),則需要打開一個連接,使用它然后關閉:
try(DB db = Base.open(...)){
// your code here
}
這將確保關閉連接並從當前線程中刪除該連接。 如果您使用的是ActiveWeb,則可以使用DBConnectionFilter
: http : //javalite.io/database_configuration與任何Web應用程序一樣,您將在處理請求之前打開一個連接(從連接池中拉出),在您的控制器 ,然后在請求結束時關閉連接(返回到池)。
如果您不使用ActiveWeb,則可以編寫一個簡單的Servlet Filter來完成此操作,這是一個示例: ActiveJdbcFilter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.