[JSP] Ä¿³Ø¼Ç Ç®
Ä¿³Ø¼Ç Ç®(Connection Pool)
1. Ä¿³Ø¼Ç Ç®(DBCP)
µ¥ÀÌÅͺ£À̽º¿Í ¿¬°áµÈ Ä¿³Ø¼ÇÀ» ¹Ì¸® ¸¸µé¾î¼ Ç®(pool) ¼Ó¿¡ ÀúÀåÇØ µÎ°í ÀÖ´Ù°¡ ÇÊ¿äÇÒ ¶§ Ä¿³Ø¼ÇÀ» Ç®¿¡¼ ¾²°í ´Ù½Ã Ç®¿¡ ¹ÝȯÇÏ´Â ±â¹ýÀ» ¸»ÇÑ´Ù.
À¥ ÇÁ·Î±×·¥¿¡¼´Â µ¥ÀÌÅͺ£À̽ºÀÇ È¯°æ¼³Á¤°ú ¿¬°á °ü¸® µîÀ» µû·Î XMLÆÄÀÏÀ̳ª ¼Ó¼º ÆÄÀÏÀ» »ç¿ëÇؼ °ü¸®ÇÏ°í, ÀÌ·¸°Ô ¼³Á¤µÈ Á¤º¸¸¦ À̸§À» »ç¿ëÇÏ¿© ȹµæÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
- À¥ ÄÁÅ×À̳ʰ¡ ½ÇÇàµÇ¸é¼ Ä¿³Ø¼Ç(connection) °´Ã¼¸¦ ¹Ì¸® Ç®(pool)¿¡ »ý¼ºÇØ µÓ´Ï´Ù.
- DB¿Í ¿¬°áµÈ Ä¿³Ø¼Ç(connection)À» ¹Ì¸® »ý¼ºÇؼ Ç®(pool) ¼Ó¿¡ ÀúÀåÇØ µÎ°í ÀÖ´Ù°¡ ÇÊ¿äÇÒ ¶§¿¡ °¡Á®´Ù ¾²°í ¹ÝȯÇÑ´Ù.
- ¹Ì¸® »ý¼ºÇصα⠶§¹®¿¡ µ¥ÀÌÅͺ£À̽º¿¡ ºÎÇϸ¦ ÁÙÀÌ°í À¯µ¿ÀûÀ¸·Î ¿¬°áÀ» °ü¸® ÇÒ ¼ö ÀÖ´Ù.
ÀÌ·¸°Ô Ç® ¼Ó¿¡ ¹Ì¸® »ý¼ºµÇ¾î ÀÖ´Â Ä¿³Ø¼ÇÀ» °¡Á®´Ù°¡ »ç¿ëÇÏ°í, »ç¿ëÀÌ ³¡³ª¸é Ä¿³Ø¼ÇÀ» Ç®¿¡ ¹ÝȯÇÑ´Ù.
2. Ä¿³Ø¼ÇÇ®(DBCP) »ç¿ë ÀÌÀ¯
¸¸¾à ÇѸíÀÇ Á¢¼ÓÀÚ°¡ À¥ »çÀÌÆ®¿¡ Á¢¼ÓÇß´Ù°í °¡Á¤ÇÑ´Ù. ÇØ´ç À¥ »çÀÌÆ®¿¡¼ Á¢¼ÓÀÚ´Â °Ô½ÃÆÇÀ» È®ÀÎÇÏ°í ÀÚ½ÅÀÌ ¾´ °Ô½Ã¹°À» ¼öÁ¤ÇÏ°í ¶Ç »õ·Î¿î °Ô½Ã±ÛÀ» µî·ÏÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ.
±×·³ ÀÌ ÇѸíÀÇ Á¢¼ÓÀÚ·Î ÀÎÇØ DBÁ¢¼ÓÀº ¾Æ·¡¿Í °°ÀÌ ¹ß»ýÇÑ´Ù.
1) µ¥ÀÌÅÍ Ãëµæ
2) °Ë»ö ÈÄ µ¥ÀÌÅÍ Ãëµæ
3) µ¥ÀÌÅÍ °»½Å
4) µ¥ÀÌÅÍ »õµî·Ï
Áï ÇѸíÀÇ Á¢¼ÓÀÚ·Î ÀÎÇØ ´Ü ½Ã°£¿¡ 4¹øÀÇ DB Á¢¼ÓÀÌ ÀϾÙ.
±×·³ À¥»ó¿¡¼ ¾ÆÁÖ ÂªÀº ½Ã°£¿¡ ¸î¹øÀÇ DB Á¢¼ÓÀÌ ÀϾ±î? ¸¸¾à Á¢¼ÓÀÚ°¡ 1000¸í À̶ó¸é? Áï Ä¿³Ø¼Ç Ç®À̶õ ¹Ì¸® Ä¿³Ø¼Ç °´Ã¼¸¦ »ý¼ºÇÏ°í ÇØ´ç Ä¿³Ø¼Ç °´Ã¼¸¦ °ü¸®Çϴ°ÍÀ» ÀǹÌÇÑ´Ù.
Áï 'Ä¿³Ø¼Ç Ç®¿¡ DB¿Í ¿¬°áÀ» ÇØ ³õÀº °´Ã¼¸¦ µÎ°í ÇÊ¿äÇÒ ¶§¸¶´Ù Ä¿³Ø¼Ç Ç®¿¡¼ ºô·Á¿Â´Ù' ¶ó°í ÀÌÇØÇÏ¸é °³³äÀâ±â¿¡ ½¬¿ïµí ÇÏ´Ù.
±×¸®°í ¿¬°áÀÌ ³¡³ª¸é ´Ù½Ã Ç®¿¡ µ¹·ÁÁØ´Ù.
Ä¿³Ø¼Ç Ç®À» ³Ê¹« Å©°Ô ÇسõÀ¸¸é ´ç¿¬È÷ ¸Þ¸ð¸® ¼Ò¸ð°¡ Ŭ°ÍÀÌ°í, Àû°Ô ÇسõÀ¸¸é Ä¿³Ø¼ÇÀÌ ¸¹ÀÌ ¹ß»ýÇÒ °æ¿ì ´ë±â½Ã°£ÀÌ ¹ß»ýÇÒ °ÍÀÌ´Ù. Áï À¥ »çÀÌÆ® µ¿½Ã Á¢¼ÓÀÚ¼ö µî ¼¹ö ºÎÇÏ¿¡ µû¶ó Å©±â¸¦ Á¶Á¤ÇØ¾ß ÇÒ°ÍÀÌ´Ù.
cp.)
¼¹ö´Â µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â »ç¶÷ÀÇ ¼ö¶ó´Â °³³äÀÌ Á¸ÀçÇÕ´Ï´Ù.ÀϹÝÀûÀÎ Ä¿³Ø¼ÇÀ» ÀÌ¿ëÇÏ¸é µ¿½Ã Á¢¼ÓÀÚ ¼ö¸¦ ¹þ¾î³ª°Ô µÉ °æ¿ì ¿¡·¯(¿¹¿Ü)°¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù.
¿¹¿Ü°¡ ¹ß»ýÇÏ¸é ±× Á¢¼ÓÀÚ´Â ´õÀÌ»ó 󸮸¦ ÇÏÁö ¸øÇϹǷÎ, »çÀÌÆ® ÀÌ¿ëÀÚ´Â ´Ù½Ã Á¢¼ÓÀ» ½ÃµµÇؾßÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ½À´Ï´Ù.À̸¦ ÇØ°áÇϱâ À§ÇØ Åº»ýÇÑ °ÍÀÌ Ä¿³Ø¼Ç Ç® ÀÔ´Ï´Ù.
Ä¿³Ø¼Ç Ç®À̶õ µ¿½Ã Á¢¼ÓÀÚ°¡ °¡Áú ¼ö ÀÖ´Â Ä¿³Ø¼ÇÀ» Çϳª·Î ¸ð¾Æ³õ°í °ü¸®ÇÑ´Ù´Â °³³äÀÔ´Ï´Ù. ´©±º°¡ Á¢¼ÓÇϸé ÀÚ½ÅÀÌ °ü¸®ÇÏ´Â Ç®¿¡¼ ³²¾ÆÀÖ´Â Ä¿³Ø¼ÇÀ» Á¦°øÇÕ´Ï´Ù.
ÇÏÁö¸¸ ³²¾ÆÀÖ´Â Ä¿³Ø¼ÇÀÌ ¾ø´Â °æ¿ì¶ó¸é ÇØ´ç Ŭ¶óÀ̾ðÆ®´Â ´ë±â »óÅ·ΠÀüȯ½Ãŵ´Ï´Ù. ±×¸®°í Ä¿³Ø¼ÇÀÌ ´Ù½Ã Ç®¿¡ µé¾î¿À¸é ´ë±â »óÅ¿¡ Àִ Ŭ¶óÀ̾ðÆ®¿¡°Ô ¼ø¼´ë·Î Á¦°øÇÕ´Ï´Ù.
- JDBC¸¦ ÅëÇÏ¿© DB¿¡ ¿¬°áÇϱâ À§Çؼ´Â µå¶óÀ̹ö(Driver)¸¦ ·ÎµåÇÏ°í Ä¿³Ø¼Ç(connection) °´Ã¼¸¦ ¹Þ¾Æ¿Í¾ß ÇÑ´Ù.
- JDBC¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ¿äûÀ» ÇÒ ¶§¸¶´Ù ¸Å¹ø µå¶óÀ̹ö¸¦ ·ÎµåÇÏ°í Ä¿³Ø¼Ç °´Ã¼¸¦ »ý¼ºÇÏ¿© ¿¬°áÇÏ°í Á¾·áÇϱ⠶§¹®¿¡ ¸Å¿ì ºñÈ¿À²ÀûÀÌ´Ù.
- ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ Ä¿³Ø¼ÇÇ®(DBCP)¸¦ »ç¿ëÇÑ´Ù.
3. Ä¿³Ø¼ÇÇ®(DBCP)ÀÇ Æ¯Â¡
- Ç® ¼Ó¿¡ ¹Ì¸® Ä¿³Ø¼ÇÀÌ »ý¼ºµÇ¾î Àֱ⠶§¹®¿¡ Ä¿³Ø¼ÇÀ» »ý¼ºÇÏ´Â µ¥ µå´Â ¿¬°á ½Ã°£ÀÌ ¼ÒºñµÇÁö ¾Ê´Â´Ù.
- Ä¿³Ø¼ÇÀ» °è¼ÓÇؼ Àç»ç¿ëÇϱ⠶§¹®¿¡ »ý¼ºµÇ´Â Ä¿³Ø¼Ç ¼ö°¡ ¸¹Áö ¾Ê´Ù.
--> Ä¿³Ø¼Ç Ç®À» »ç¿ëÇϸé Ä¿³Ø¼ÇÀ» »ý¼ºÇÏ°í ´Ý´Â ½Ã°£ÀÌ ¼Ò¸ðµÇÁö ¾Ê±â ¶§¹®¿¡ ±×¸¸Å ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà ¼Óµµ°¡ »¡¶óÁö¸ç, ¶ÇÇÑ ÇÑ ¹ø¿¡ »ý¼ºµÉ ¼ö ÀÖ´Â Ä¿³Ø¼Ç ¼ö¸¦ Á¦¾îÇϱ⠶§¹®¿¡ µ¿½Ã Á¢¼ÓÀÚ ¼ö°¡ ¸ô·Áµµ À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ½±°Ô ´Ù¿îµÇÁö ¾Ê´Â´Ù.
4. ±×·¸´Ù¸é µ¿½Ã Á¢¼ÓÀÚ Ã³¸®´Â..?
Ä¿³Ø¼Ç Ç®¿¡¼ »ý¼ºµÇ¾î ÀÖ´Â Ä¿³Ø¼ÇÀÇ °¹¼ö´Â ÇÑÁ¤ÀûÀÌ´Ù. ±×·¸´Ù¸é µ¿½Ã Á¢¼ÓÀÚ°¡ ¸¹¾ÆÁö¸é ¾î¶»°Ô µÉ±î?
Ä¿³Ø¼Ç Ç®Àº ´©±ºÀÚ Á¢¼ÓÇϸé Ä¿³Ø¼Ç Ç®¿¡ ³²¾Æ ÀÖ´Â Ä¿³Ø¼ÇÀ» Á¦°øÇÏ´Â ½ÄÀÌ´Ù. ÇÏÁö¸¸ ³²¾ÆÀÖ´Â Ä¿³Ø¼ÇÀÌ ¾øÀ» °æ¿ì ÇØ´ç Ŭ¶óÀ̾ðÆ®´Â ´ë±â »óÅ·ΠÀüȯÀÌ µÇ°í, Ä¿³Ø¼ÇÀÌ ¹ÝȯµÇ¸é ´ë±âÇÏ°í ÀÖ´Â ¼ø¼´ë·Î Ä¿³Ø¼ÇÀÌ Á¦°øµÈ´Ù.
5. ȯ°æ¼³Á¤
(1) DBCP ¶óÀ̺귯¸® Ãß°¡
- ÀÌÀü¹öÀü commons-dbcp-1.4jar, commons-pool-1.6.jar, commons-collections-3.2.1-bin.zip 3°³ÀÇ ¶óÀ̺귯¸®´Â ÅèĹ 6.0 ºÎÅÍ tomcat-dbcp.jar ÆÄÀÏ·Î Çϳª·Î ÅëÇյǾú´Ù.
- ÅèĹ¼³Ä¡Æú´õ lib Æú´õ¿¡ ÀÖ´Â tomcat-dbcp.jar ÆÄÀÏÀ» À¥ÇÁ·ÎÁ§Æ®\WebContent\WEB-INF\lib °æ·Î¿¡ º¹»çÇÑ´Ù.
(2) DB ¶óÀ̺귯¸® Ãß°¡(¿À¶óŬ - ojdbc.jar)
(3) \Servers\Tomcat v6.0 Server at localhost-config\context.xml ÆÄÀÏ¿¡ Resource ÅÂ±× Ãß°¡
¡Ø Ä¿³Ø¼Ç Ç®ÀÇ ¼Ó¼º
¼Ó¼º | ¼³¸í |
maxActive | Ä¿³Ø¼Ç Ç®ÀÌ Á¦°øÇÒ ÃÖ´ë Ä¿³Ø¼Ç °¹¼ö |
whenExhaustedAction | Ä¿³Ø¼Ç Ç®¿¡¼ °¡Á®¿Ã ¼ö ÀÖ´Â Ä¿³Ø¼ÇÀÌ ¾øÀ» ¶§ ¾î¶»°Ô µ¿ÀÛÇÒÁö¸¦ ÁöÁ¤. 0ÀÏ °æ¿ì ¿¡·¯ ¹ß»ý 1ÀÏ °æ¿ì maxWait ¼Ó¼º¿¡¼ ÁöÁ¤ÇÑ ½Ã°£¸¸Å Ä¿³Ø¼ÇÀ» ±¸ÇÒ¶§±îÁö ±â´Ù¸². 2ÀÏ °æ¿ì ÀϽÃÀûÀ¸·Î Ä¿³Ø¼ÇÀ» »ý¼ºÇؼ »ç¿ë |
maxWait | whenExhaustedAction ¼Ó¼ºÀÇ °ªÀÌ 1ÀÏ ¶§ »ç¿ëµÇ´Â ´ë±â ½Ã°£. ´ÜÀ§´Â 1/1000ÃÊ, 0º¸´Ù ÀÛÀ» °æ¿ì ¹«ÇÑÈ÷ ´ë±â |
maxIdle | »ç¿ëµÇÁö ¾Ê°í Ç®¿¡ ÀúÀåµÉ ¼ö ÀÖ´Â ÃÖ´ë Ä¿³Ø¼Ç °¹¼ö. À½¼öÀÏ °æ¿ì Á¦ÇÑÀÌ ¾øÀ½ |
minIdle | »ç¿ëµÇÁö ¾Ê°í Ç®¿¡ ÀúÀåµÉ ¼ö ÀÖ´Â ÃÖ¼Ò Ä¿³Ø¼Ç °¹¼ö. |
testOnBorrow | trueÀÏ °æ¿ì Ä¿³Ø¼Ç Ç®¿¡¼ Ä¿³Ø¼ÇÀ» °¡Á®¿Ã ¶§ Ä¿³Ø¼ÇÀÌ À¯È¿ÇÑÁöÀÇ ¿©ºÎ¸¦ °Ë»ç |
testOnReturn | trueÀÏ °æ¿ì Ä¿³Ø¼Ç Ç®¿¡ Ä¿³Ø¼ÇÀ» ¹ÝȯÇÒ ¶§ Ä¿³Ø¼ÇÀÌ À¯È¿ÇÑÁöÀÇ ¿©ºÎ¸¦ °Ë»ç |
timeBetweenEvctionRunsMillis | »ç¿ëµÇÁö ¾Ê´Â Ä¿³Ø¼ÇÀ» ÃßÃâÇÏ´Â ¾²·¹µåÀÇ ½ÇÇà ÁÖ±â ÁöÁ¤. ¾ç¼ö°¡ ¾Æ´Ò °æ¿ì ½ÇÇàµÇÁö ¾Ê´Â´Ù. ½Ã°£ ´ÜÀ§´Â 1/1000ÃÊ. |
numTestsPerEvictionRun | »ç¿ëµÇÁö ¾Ê´Â Ä¿³Ø¼ÇÀ» ¸î °³ °Ë»çÇÒ Áö ÁöÁ¤ |
minEvictableIdleTimeMillis | »ç¿ëµÇÁö ¾Ê´Â Ä¿³Ø¼ÇÀ» ÃßÃâÇÒ ¶§ ÀÌ ¼Ó¼®¿¡¼ ÁöÁ¤ÇÑ ½Ã°£ ÀÌ»ó ºñÈ°¼ºÈ »óÅÂÀÎ Ä¿³Ø¼Ç¸¸ ÃßÃâ. ¾ç¼ö°¡ ¾Æ´Ñ °æ¿ì ºñÈ°¼ºÈµÈ ½Ã°£À¸·Î´Â Ç®¿¡¼ Á¦°ÅµÇÁö ¾ÊÀ½. ½Ã°£ ´ÜÀ§´Â 1/1000ÃÊ |
testWhileIdle | trueÀÏ °æ¿ì ºñÈ°¼ºÈ Ä¿³Ø¼ÇÀ» ÃßÃâÇÒ ¶§ Ä¿³Ø¼ÇÀÌ À¯È¿ÇÑÁöÀÇ ¿©ºÎ¸¦ °Ë»çÇؼ À¯È¿ÇÏÁö ¾ÊÀº Ä¿³Ø¼ÇÀº Ç®¿¡¼ Á¦°Å. |
(4) À¥ÇÁ·ÎÁ§Æ®\WebContent\WEB-INF\web.xml ÆÄÀÏ¿¡ <resource-ref> ÅÂ±× Ãß°¡
- <res-ref-name> ű×ÀÇ À̸§Àº contex.xml ÆÄÀÏ <resource>ű×ÀÇ name ¼Ó¼ºÀÇ À̸§°ú °°¾Æ¾ßÇÑ´Ù.
- (4) ÀÛ¾÷Àº ÅèĹ 6.0 ÀÌ»óºÎÅÍ´Â »ý·« °¡´ÉÇÏ´Ù.
(5) JAVA ÄÚµå·Î ¿¬°á
- ¼ºí¸´¿¡¼ ÀÛ¼ºÇÑ´Ù. (MVC ±¸Á¶·Î ±¸ÇöÇÒ °æ¿ì)
- ¿¹¿Ü¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ¿¹¿Ü󸮸¦ ÇØÁØ´Ù.
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBCP {
/*
* ÀÌ Äڵ带 ¾Æ·¡¿Í °°ÀÌ ÁÙ¿©¼ ÀÛ¼º°¡´ÉÇÏ´Ù.
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
// ("java:comp/env"): JNDI ¼ºñ½º¿¡ Á¢±ÙÇϱâ À§ÇÑ ±âº» À̸§(ÀÌ ÀÚ¿øÀ» ã°Ú´Ù.--> web.xmlÀÇ <res-ref-name>
DataSource dataSource = (DataSource) envContext.lookup("jdbc/oracle");
Connection conn = dataSource.getConnection();
*/
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/oracle");
Connection con = dataSource.getConnection();
}
(6) servers > context.xml ÆÄÀÏ º¹»ç
- ¼¹ö°¡ º¯°æµÇ°Å³ª ¼¹ö¿¡¼ ÇÁ·ÎÁ§Æ®¸¦ Á¦°ÅÇÏ´Â °æ¿ì¿¡ ´Ù½Ã Ãß°¡Çؼ ½ÇÇàÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ´Ù.
- \Servers\Tomcat v6.0 Server at localhost-config\context.xml ÆÄÀÏÀ» º¹»çÇÑ´Ù.
- À¥ÇÁ·ÎÁ§Æ®\WebContent\WEB-INF\ µð·ºÅ͸®¿¡ ºÙ¿©³Ö±â ÇÑ´Ù.
6. JNDI(Java Naming and Directory Interface)
¼³Á¤µÈ Á¤º¸¸¦ À̸§À¸·Î ȹµæÇÏ·Á¸é ÀÚ¹ÙÀÇ ³×ÀÌ¹Ö API¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ³×ÀÌ¹Ö ÆÐÅ°ÁöÀÇ Å¬·¡½º¸¦ °¡Áö°í À̸§À¸·Î °´Ã¼¸¦ ȹµæÇÏ´Â °ÍÀ» JNDI(Java Naming and Directory Interface)¶ó°í ÇÑ´Ù.
- ¼ºñ½º°¡ ´Ù¸¥ ¼ºñ½º¸¦ Ž»öÇÒ ¶§ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù. (ºÐ»êµÈ ÀÚ¿ø)
- ºÐ»êµÈ ÀÚ¿ø ³¢¸®ÀÇ Å½»öÀ» ¿øÇÒÇÏ°Ô Çϱâ À§ÇÑ type casting ÀÓ. (DNS µµ ÀÌ¿¡ ¼ÓÇÔ)
- JNDI¿¡ ¼³Á¤ÇØ ³õ¾Ò´Ù´Â°ÍÀº Context.xml¿¡ ¸®¼Ò½º¸¦ »ý¼ºÇسõÀº °ÍÀ» ¸»ÇÑ´Ù.
cf.)
À̸§À» ÀÌ¿ëÇؼ ¿øÇÏ´Â Á¤º¸ ȤÀº ÀÚ¿ø(Connection)À» ãÀ» ¼ö ÀÖ´Â ¼ºñ½º
javax.naming ¼ºñ½º
initialContext Ŭ·¡½º
(1) META-INF/context.xml
¸®¼Ò½º µî·ÏÇÏ´Â ¼³Á¤ÆÄÀÏ
<Context>
<!-- Resource¸¦ µî·ÏÇÏ¿© À¥¿¡¼ JNDI·Î È£ÃâÇÒ À̸§°ú Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù. -->
<Resource name="jdbc/myconn" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/web_java?autoReconnect=true"
username="root" password="12345678"
maxActive="100" maxIdle="30" maxWait="10000"
removeAbandoned="true" removeAbandonedTimeout="60"/>
<!--
1. name : JNDI·Î È£ÃâµÉ À̸§À» ¼³Á¤ÇÑ´Ù. (Á¢±Ù -> java:comp/env/jdbc/myconn)
2. auth : DBCP¸¦ °ü¸®ÇÒ °ü¸®ÀÚ (Container or Application)
3. type : ÇØ´ç resourceÀÇ return type
(DataSource´Â Connection °´Ã¼¸¦ ¹ÝȯÇÒ ¼ö ÀÖ´Ù.)
4. factory : dbcp¸¦ À¯¿ëÇÏ´Â °ü¸® Ŭ·¡½º (Tomcat 5.x¿¡ ±âº»À¸·Î Á¸ÀçÇϴ Ŭ·¡½º)
(Á÷Á¢ DBCP Ŭ·¡½º¸¦ ÁöÁ¤Çصµ µ¿ÀÛÇϴµ¥ ¹®Á¦°¡ ¾ø´Ù.)
(±×·¯³ª, Factory Ŭ·¡½º¸¦ ÀÌ¿ëÇϸé Á»´õ ¾ÈÁ¤ÀûÀ¸·Î °ü¸®ÇÒ ¼ö ÀÖ´Ù.)
5. driverClassName : JDBC¸¦ ÀÌ¿ëÇϱâ À§ÇÑ µå¶óÀ̹ö Ŭ·¡½º
6. url : DBÀÇ Á¢¼Ó URL (¼Ó¼ºÀ¸·Î ÀÚµ¿ Àç Á¢¼ÓÀ» ¼±ÅÃÇß´Ù.)
7. username : DBÀÇ °èÁ¤ ¸í
8. password : °èÁ¤¿¡ ´ëÇÑ ºñ¹Ð¹øÈ£
9. maxActive : ÃÖ´ë Á¢¼Ó Çã¿ë °³¼ö
10. maxIdle : DB Pool¿¡ ¿©ºÐÀ¸·Î ³²°ÜÁú ÃÖ´ë Connection °³¼ö
11. maxWait : DB ¿¬°áÀÌ ¹ÝȯµÇ´Â TimeoutÀÇ ÃÖ´ë ½Ã°£ (-1Àº ¹«ÇÑ ´ë±â)
12. removeAbandoned : ConnectionÀÌ À߸ø °ü¸®µÇ¾î ¹ö·ÁÁø ¿¬°áÀ» ã¾Æ ÀçÈ°¿ëÇÒ °ÍÀÎÁöÀÇ ¿©ºÎ ¼³Á¤
(true ¼³Á¤ÀÏ ¶§ ÇöÀç DB ¿¬°áÀÌ ÀûÀ¸¸é ¹ö·ÁÁø ¿¬°áÀ» ã¾Æ ÀçÈ°¿ë)
13. removeAbandonedTimeout : ¹ö·ÁÁø ¿¬°á·Î ÀνÄÇÒ ±âº» ½Ã°£ ¼³Á¤
(ÃÊ ´ÜÀ§·Î ÇØ´ç ½Ã°£ÀÌ Áö³ª¸é ¹ö·ÁÁø ¿¬°á·Î ÀνÄÇÑ´Ù.)
-->
</Context>
(3) ÀÚ¹ÙÄÚµå
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;//DataSource Ŭ·¡½º¸¦ À§ÇØ »ç¿ë
import javax.naming.*;//JNDI¸¦ À§ÇØ »ç¿ë
public class Round16_06_Servlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("euc-kr");
String subject = request.getParameter("subject");
String author = request.getParameter("author");
String contents = request.getParameter("contents");
response.setContentType("text/html;charset=euc-kr");
PrintWriter out = response.getWriter();
out.println("<html><body><center><h3>");
Connection conn = null;
PreparedStatement pstmt = null;
String query = "insert into Round16_Table_01 values (null, ?, ?, ?)";
try {
Context context = new InitialContext();
//JNDI¸¦ ÀÌ¿ëÇϱâ À§ÇÑ °´Ã¼ »ý¼º
DataSource source = (DataSource)context.lookup("java:comp/env/jdbc/myconn");
// lookup(): µî·ÏµÈ naming ¼ºñ½º·ÎºÎÅÍ ÀÚ¿øÀ» ã°íÀÚÇÒ ¶§ »ç¿ëÇÏ´Â ¸Þ¼µå
//context °´Ã¼¸¦ ÅëÇØ À̸§À¸·Î Resource¸¦ ȹµæÇÑ´Ù.
//("jdbc/myconn"): JNDI ¼ºñ½º¿¡ Á¢±ÙÇϱâ À§ÇÑ ±âº» À̸§(ÀÌ ÀÚ¿øÀ» ã°Ú´Ù.--> web.xmlÀÇ <res-ref-name>
//JNDIÀÇ ¸ðµç À̸§Àº ±âº»ÀûÀ¸·Î java:comp/env¿¡ µî·ÏµÇ¾î ÀÖ´Ù.
//ÇØ´ç ¿µ¿ª¿¡¼ jdbc/myconnÀ¸·Î ¼³Á¤µÈ À̸§À» ȹµæÇÑ´Ù.
conn = source.getConnection();
//source·Î ºÎÅÍ Connection °´Ã¼¸¦ ȹµæÇÑ´Ù.
//ÀÌ °´Ã¼´Â ÀÌÁ¦ ContainerÀÇ DBCP¿¡ ÀÇÇØ °ü¸®µÈ´Ù.
}catch(Exception e) {}
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, subject);
pstmt.setString(2, author);
pstmt.setString(3, contents);
int res = pstmt.executeUpdate();
if(res > 0)
out.println("Success Save!!");
pstmt.close();
conn.close();
}catch(Exception e) {
out.println("SQL Process Error : " + e.getMessage());
}
out.println("</h3></center></body></html>");
}
}
Ãâó: http://devbox.tistory.com/entry/JSP-Ä¿³Ø¼Ç-Ç®-1 [ÀåÀΰ³¹ßÀÚ¸¦ ²Þ²Ù´Â :: ±â·ÏÇÏ´Â °ø°£]