커넥션 풀
웹 & 안드로이드/JAVA & JSP2013. 9. 30. 21:40
jdbc를 사용하여 db에 접속하기 위해서는 드라이버를 로드하고 connection 객체를 생성해야 한다. 이 경우 db에 접속할 때마다 드라이버를 로드하고 커넥션 객체를 생성하고 close해야 하는데 접속자가 많을 경우 서버에 부하를 줄 수 있다.
이를 해결하기 위해 커넥션 풀을 사용한다.
1. Connection pool
db와 연결된 connection을 미리 만들어 pool속에 저장했다가 접속이 필요한 때에 불러와 사용하고 다시 pool로 반환하는 기법. 다 사용한 커넥션을 재사용 하기 때문에 다시 커넥션을 생성 할 필요가 없다.
2. 커넥션 풀 사용하기.
2-1. 라이브러리 다운.
- http://commons.apache.org/proper/commons-collections/
- http://commons.apache.org/proper/commons-dbcp/
- http://commons.apache.org/proper/commons-pool/
각각 접속하여 다운 받는다.
2-2. 코드 추가.
- /META-INF/context.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
<Context>
<!-- 오라클 db에 접속하기 위한 코드 --><!-- 이름을 잘 기억하고 있어야 한다. -->
<Resource name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
username="scots" password="tiges"
maxActive="20" maxIdle="10" maxWait="-1"/>
<!-- mysql db에 접속하기 위한 코드 -->
<Resource name="jdbc/mymysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/exam"
username="root" password="java1234"
maxActive="200" maxIdle="100" maxWait="-1"/>
</Context> |
-/WEB-INF/web.xml <web-app>태그 사이에 추가.
1
2
3
4
5
6 |
<resource-ref>
<description>Connection</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> |
2-3. jdbc에 적용.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
public class DBManager {
public static Connection getConnection(){
Connection conn = null;
try{
// 이부분을 추가하면 된다.
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/mymysql");//"jdbc/myoracle"
conn = ds.getConnection();
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
} |
'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글
다형성-추상클래스 (0) | 2013.10.01 |
---|---|
추상클래스, 인터페이스 (0) | 2013.10.01 |
[이클립스 플러그인]SubVersive, svnConnector(svn 설치) (0) | 2013.09.30 |
아파치/톰캣 설치하기 (0) | 2013.09.27 |
[자바 라이브러리]JDBC (0) | 2013.09.27 |
댓글()