第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何覆蓋一些 java.sql.connection 方法,如 prepareStatement

如何覆蓋一些 java.sql.connection 方法,如 prepareStatement

回首憶惘然 2023-02-23 18:11:16
我想覆蓋連接接口中的一些方法,以便在調(diào)用連接對象上的提交時關(guān)閉 preparedStatements 和 resultSets。我的代碼庫中有很多資源泄漏,作為故障保護(hù),我想實現(xiàn)這個解決方案,在每次提交時,我都可以查找所有打開的語句和結(jié)果集并關(guān)閉它們。但是,在這種情況下,我沒有一個類可以在所有其他方法上覆蓋和調(diào)用 super() 。作為連接返回的對象是動態(tài)代理 - com.sun.proxy.$Proxy。不確定如何為這個對象調(diào)用我自己的方法。任何線索都受到高度贊賞。PS:我在項目中使用的是ojdbc8的jar,是最近從ojdbc7升級而來的。據(jù)我所知,我們在以前的版本中從未遇到過任何資源泄漏問題(例如超出最大打開游標(biāo)數(shù))。
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗 獲得超6個贊

您的 JDBC 庫是開源的嗎?然后下載 JDBC 版本的源代碼,更改這一代碼,再次生成 JAR 并使用它。當(dāng)您這樣做時,問題是代碼中的所有“關(guān)閉”調(diào)用不再是合法的關(guān)閉類,而是冗余調(diào)用,在這種情況下,我不知道 JDBC 是否會再拋出一個異常(類似于'連接已經(jīng)關(guān)閉')或沒有,但如果是,你需要抑制異常或其他東西。

但這里的基本思想是您正在修改源代碼,這是有風(fēng)險的。

現(xiàn)在,即使你找到了一個通用的修復(fù),下一個問題是關(guān)于影響的,包括你在內(nèi)的任何人都不能說出這個的影響,其他人應(yīng)該批準(zhǔn)這個改變(假設(shè)這是一個大代碼并且是某個項目)。

因此,與其做這樣的事情并引發(fā)新問題,不如接受這樣一個事實,即過去有人做過一些糟糕的工作,我們現(xiàn)在以正確的方式解決它。

我知道這正是您在這里要避免的,那么我認(rèn)為您應(yīng)該嘗試修改 JDBC 源并試一試。一切順利!


查看完整回答
反對 回復(fù) 2023-02-23
?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊

如果您只是想查找泄漏,為什么不改用調(diào)試器呢?您可以在每個相關(guān)方法上設(shè)置斷點并查看調(diào)用它們的位置,然后繼續(xù)檢查以確保它們已正確關(guān)閉。作為一個額外的好處,如果有任何邊緣情況阻止正確關(guān)閉,您將只是單步執(zhí)行相關(guān)代碼,因此您可以更快地找出需要修復(fù)的內(nèi)容。



查看完整回答
反對 回復(fù) 2023-02-23
  • 2 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號