類的呼叫問題,對付大量程式碼中資料庫連線未及時釋放的程式碼維護問題
背景:
檔案
jsp >1000 內嵌大量java程式碼
class>200
經過n多人的n次修改,問題很多
主要是資料庫未及時釋放的為主要
思路:
所有的jsp 和 class 共享一個資料庫連線池
想透過修改DBconnionmanager類的
兩個方法
getConnection();
紀錄連線檔名
和
freeConnection();
得到檔名比較得到未釋放連線的檔名
要求不修改jsp檔案
現在主要是不知道如何得到檔名
得到編譯過的servlet名字好像也行
jsp 呼叫方法:
DBConnectionManager.java
請高手至招 thanks!
檔案
jsp >1000 內嵌大量java程式碼
class>200
經過n多人的n次修改,問題很多
主要是資料庫未及時釋放的為主要
思路:
所有的jsp 和 class 共享一個資料庫連線池
想透過修改DBconnionmanager類的
兩個方法
getConnection();
紀錄連線檔名
和
freeConnection();
得到檔名比較得到未釋放連線的檔名
要求不修改jsp檔案
現在主要是不知道如何得到檔名
得到編譯過的servlet名字好像也行
jsp 呼叫方法:
DBConnectionManager connMgr = null; Statement sqlStmt = null; ResultSet sqlRst2 =null; Connection conn = null; try{ connMgr = DBConnectionManager.getInstance(); conn=connMgr.getConnection("voice"); sqlStmt2 = conn.createStatement(); sqlStmt2.executeUpdate(strSql); } finally{ connMgr.freeConnection("voice",conn); if (!conn.isClosed())conn.close(); conn = null; } <p class="indent"> |
DBConnectionManager.java
/** * 管理類DBConnectionManager支援對一個或多個由屬性檔案定義的資料庫連線 * 池的訪問.客戶程式可以呼叫getInstance()方法訪問本類的唯一例項. */ public class DBConnectionManager { static private DBConnectionManager instance; // 唯一例項 /** * 返回唯一例項.如果是第一次呼叫此方法,則建立例項 * * @return DBConnectionManager 唯一例項 */ static synchronized public DBConnectionManager getInstance() { if (instance == null) { instance = new DBConnectionManager(); } clients++; return instance; } /** * 將連線物件返回給由名字指定的連線池 * * @param name 在屬性檔案中定義的連線池名字 * @param con 連線物件 */ public void freeConnection(String name, Connection con) { if (con == null) { System.out.println("connection is null"); } try { con.setAutoCommit(true); ConnectionPool pool = (ConnectionPool) pools.get(name); String connName = "Unknown"; //連線名未知 if (pool != null) { //if(isDebug) System.out.println("連線池釋放連線:Unknown" + " -"); con.close(); } } catch (Exception e) { } } public Connection getConnection(String name) { ConnectionPool pool = (ConnectionPool) pools.get(name); // String connName = "Unknown"; try { if (pool != null) { //System.err.println('1'); return pool.getConnection(); } //System.err.println('2'); return null; } catch (Exception e) { e.printStackTrace(); //System.err.println('3'); return null; } } } <p class="indent"> |
請高手至招 thanks!
相關文章
- jboss中資料庫連線出問題資料庫
- 資料庫連線沒有釋放造成的奇怪問題資料庫
- 前端開發---微信網頁開發中資料庫的連線問題前端網頁資料庫
- python中多程式處理資料庫連線的問題Python資料庫
- 請問,關於資料庫連線的問題。資料庫
- .net 資料庫連線池超時問題資料庫
- jive的資料庫連線配置問題資料庫
- Hue的Impala模組沒有釋放連線的問題解決
- 線上問題總結-獲取不到連線池(logback 配置+程式碼問題)
- 解決pl/sql developer中資料庫插入資料亂碼問題SQLDeveloper資料庫
- SessionBean呼叫資料庫的問題SessionBean資料庫
- hibernate資料庫連線池的問題資料庫
- 資料庫連線未關閉的問題資料庫
- 一個資料庫連線池的問題資料庫
- 程式碼設計問題
- laradock 資料庫連線問題資料庫
- 資料庫連線池的問題,連線池物件為靜態變數有問題麼資料庫物件變數
- 程式設計師寫程式碼時應該反覆問自己的10個問題程式設計師
- Vue使用中遇到的程式碼問題Vue
- 請教Jive程式碼中的問題
- 請教關於資料庫連線的問題資料庫
- JSP+javaBean連線資料庫的問題JSJavaBean資料庫
- JDBC用ResultSet訪問大量資料時會遇到的問題JDBC
- 發現 postman 自動生成介面呼叫程式碼的一個問題Postman
- 非議MFC(三)庫程式碼的質量問題 (轉)
- 一個JAVA程式呼叫外部程式的問題!(急)Java
- C語言連線mysql資料庫查詢中文的資料表亂碼問題C語言MySql資料庫
- html檔案中的php程式碼被註釋掉的問題HTMLPHP
- Django資料庫連線丟失問題Django資料庫
- 請教資料庫連線問題??急!資料庫
- [求助]資料庫連線池配置問題資料庫
- 關於JPetstore連線資料庫問題資料庫
- jivejdon程式碼跟蹤問題
- 多執行緒程式中對資料庫連線使用的疑問執行緒資料庫
- 請教一個java程式記憶體釋放的問題Java記憶體
- Oracle資料庫維護常用的SQL程式碼示例(zt)Oracle資料庫SQL
- GNU sed 維護者因程式碼版權歸屬問題爭議辭職
- [BUG反饋]PDO連線亂碼問題