到DB的連接數超出了允許的限制。在Struts2中維護多個JDBC連接
這是我到目前爲止所嘗試的。
當用戶成功登錄我添加一個連接對象到會話:
Connection conn = DatabaseConnectionManager.getConnection();
sessionMap.put("Connection", conn);
然後,每當我需要一個數據庫連接,我從會話獲取它:
Map<String, Object> sessionMap = (Map<String, Object>) ActionContext.getContext().get("session");
Connection conn = (Connection) sessionMap.get("Connection");
在我打印方法被調用的次數的getConnection()
方法。 因此,儘管我從會話中獲取Connection對象,爲什麼連接數超過了50的允許限制?
JNDI代碼:
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MySqdb");
conn = ds.getConnection();
}
catch (NamingException ex) {
Logger.getLogger(DatabaseConnectionManager.class.getName()).log(Level.SEVERE, null, ex);
}
catch (SQLException sqle) {
sqle.printStackTrace();
}
System.out.println("connection: "+connection++);
return conn;
我已經使用JNDI。連接數量在允許的限制範圍內。我不確定這是否正確,請告知。
樣你知道網絡的應用程序的生命週期和客戶端/服務器編程雙面??? JDBC連接池是服務器的屬性,我認爲它不應該通過httpSession傳播。 – Sarz
我想我知道。我期待downvote。只要它引導我走向正確的方向,我就會接受批評。 – wib
使用一些連接池。 –