在ejb 3.0 jboss 6環境中,我有一個名爲DBInterface的bean,注入到許多dao類中以執行sql查詢。 DBInterface bean將數據源作爲字段變量注入。 DBInterface bean中的所有方法都從注入的數據源獲取數據庫連接,並在處理db-calls之後關閉連接。在運行應用程序時,經過一段時間後,我得到的sql異常說不能創建數據庫連接。我正在關閉finally塊中每個方法調用的連接。我在哪裏犯錯誤?我在jboss中使用ejb 3.0。 問候 VEJB 3.0託管bean注入和db連接關閉
public class DBInterface {
@Resource(mappedName = "java:ora.ds", type = DataSource.class)
private static DataSource dataSource;
protected Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printstacktrace();
}
}
public void method1() {
Connection connection = null;
try {
connection = getConnection();
...............
db codes
.................
} catch (SQLException e) {
logger.error(e);
throw new DBException("sql exception ", e);
} finally {
try {
closeResources(rs, statement, connection);
} catch (SQLException e) {
logger.error(e);
throw new DBException("sql exception ", e);
}
}
}
public void closeResources(ResultSet rs, Statement st, Connection con)
throws SQLException {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
}
}
不要注入一個數據源到靜態字段... – 2013-04-26 15:46:34
也一定要關閉單獨的try-catch塊中的資源 – 2013-04-26 15:54:04
是的你是對的,我不再使用靜態數據源。對不起,我在這裏粘貼了舊的測試代碼。 你是什麼意思由單獨的try-catch塊?我有沒有其他的錯誤,我沒有看到這個代碼? – 2013-04-26 18:54:44