1
我正在測試聲納以確保關閉數據庫連接。爲什麼sonarqube不會爲未關閉的連接生成問題?
我正在執行eclipse的嵌入maven版本3.3.9的maven目標「sonar:sonar」。 sonarqube 6.2與sonar-java-plugin-4.10.0.10260.jar。
有了這個代碼
package servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class STestClosingResources extends HttpServlet{
private static final long serialVersionUID = 1L;
public final void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
Connection con = null;
ResultSet rsGet = null;
PreparedStatement psGet = null;
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/testci");
con = ds.getConnection();
psGet = con.prepareStatement("SELECT * FROM TEST");
rsGet = psGet.executeQuery();
int counter = 0;
while (rsGet.next()) {
counter++;
System.err.println(counter);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rsGet != null) {
rsGet.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
rsGet = null;
try {
if (psGet != null) {
psGet.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
psGet = null;
}
}
}
我不明白這個問題,我預計:
關閉在一個 「終於」 條款這種 「連接」。
爲什麼?
非常感謝您
好的,謝謝@Tibor – elamas
嗨@Tibor,我看到版本4.11的Java插件已經發布。我已經測試過它,並且因爲沒有使用ds.getConnection()關閉連接而引發了一個問題。非常感謝您的幫助。 – elamas