[Áöµð³ÝÄÚ¸®¾Æ]ExceptionÀÌ ¹ß»ýÇßÀ» ¶§µµ ConnectionÀº ´ÝÇô¾ß ÇÑ´Ù
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException, SQLException
{
String id = req.getParameter("id");
Connection conn = DriverManager.getConnection("url...","id","password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("ssselect * from XXX where id = '" + id + "'");
while(rs.next()) {
......
}
rs.close();
stmt.close();
conn.close();
.....
}
À§¿¡¼ À߸øµÈ °ÍÀº ¹«¾ùÀϱî? Ưº°È÷ À߸øµÈ °ÍÀº ¾ø´Ù. ´ÜÁö SQL¹®Àå¿¡ ¿ÀŸ°¡ ÀÖ´Ù´Â °Í »ÓÀÌ´Ù. SQLExceptionÀ̶ó´Â °ÍÀº Runtime ¶§ ¹ß»ýÇÑ´Ù. DBÀÇ Á¶°ÇÀÌ ¸ÂÁö ¾Ê°Å³ª °³¹ß ±â°£ Áß¿¡ °³¹ßÀÚÀÇ ½Ç¼ö·Î SQL¹®Àå¿¡ À§Ã³·³ ¿ÀŸ¸¦ ÀûÀ» ¼öµµ ÀÖ´Ù. ¹®Á¦´Â ExceptionÀÌ ¹ß»ýÇÏ¸é ¸¶Áö¸· ¶óÀεé Áï, rs.close(), stmt.close(), conn.close()°¡ ¼öÇàµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù.
java.sql.ConnectionÀº reference¸¦ ÀÒ´õ¶óµµ JVM(Java Virtual Machine)ÀÇ GC(Garbage Collection)ÀÇ ´ë»óÀÌ ¾Æ´Ï´Ù. ±×·¸Áö ¾Ê¾Æµµ ¸ðÀÚ¶ó´Â DB¿¬°áÀÚ¿øÀ» ƯÁ¤ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¡À¯Çϵµ·Ï ÇÏÁö ¾Ê±â ¶§¹®¿¡ DB ConnectionÀ» ´õÀÌ»ó ¿¬°áÇÏÁö ¸øÇÏ°Ô µÈ´Ù.
µû¶ó¼ ´ÙÀ½Ã³·³ ExceptionÀÇ ¹ß»ý À¯¹«¿Í »ó°ü¾øÀÌ java.sql.ConnectionÀ» close()ÇÏ´Â ·ÎÁ÷ÀÌ ²À(!) µé¾î°¡¾ß ÇÑ´Ù.
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException, SQLException
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String id = req.getParameter("id");
try {
conn = DriverManager.getConnection("url...","id","password");
stmt = conn.createStatement();
rs = stmt.executeQuery("sselect * from XXX where id = '" + id + "'");
while(rs.next()) {
......
}
rs.close();
stmt.close();
}
finally {
if ( conn != null ) try {conn.close();}catch(Exception e){}
}
.....
}
Âü°í·Î ½ÇÇÁ·ÎÁ§Æ®ÀÇ Áø´Ü ¹× Æ©´×À» ³ª°¡º¸¸é óÀ½¿¡´Â ÀûÀýÇÑ ÀÀ´ä¼Óµµ°¡ ³ª¿À´Ù°¡ ÀÏÁ¤ÇÑ È½¼ö ÀÌ»óÀ» È£ÃâÇÏ°í ³ µÚºÎÅÍ ¾öû ÀÀ´ä½Ã°£ÀÌ ´À·ÁÁø´Ù¸é ½ÊÁßÆÈ±¸´Â À§Ã³·³ java.sql.Connection À» ´ÝÁö ¾Ê¾Æ¼ »ý±â´Â ¹®Á¦ÀÌ´Ù. °¡¿ëÇÑ ¸ðµç ConnectionÀ» ¿¬°áÇØ ´õÀÌ»ó ¿¬°á½Ãų Connection ÀÚ¿øÀ» ÇÒ´çÇÒ ¼ö ¾øÀ» ¶§, ´ëºÎºÐ timewaitÀÌ °É¸®±â ¶§¹®ÀÌ´Ù.
ÀÏ´Ü DB°ü·ÃÇÑ ÀÛ¾÷ÀÌ µé¾î¿À´Â °Í¸¶´Ù timewait¿¡ ºüÁú °æ¿ì, ¾ÖÇø®ÄÉÀ̼Ǽ¹ö¿¡¼ µ¿½Ã¿¡ ó¸®ÇÒ ¼ö ÀÖ´Â ÃÖ´ë °¹¼ö¸¸Å È£ÃâÀÌ Â÷°îÂ÷°î ½×ÀÌ´Â °Ç ºÒ°ú ¸îºÐ °É¸®Áö ¾Ê´Â´Ù.
±× µÚºÎÅÍ´Â ¾Ö±ÄÀº dummy.jspÁ¶Â÷ È£ÃâÀÌ µÇÁö ¾Ê°Ô µÇ°í, ´©±º°¡´Â "½Ã½ºÅÛ ¶Ç Á×¾ú³×"¶ó¸ç ¹¦ÇÑ ¿ôÀ½À» Áþ°ï ÇÑ´Ù. @
¼ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨ç
¼ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨è
¼ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨é