반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 동기화
- sleep()메소드
- include 지시자
- include액션태그
- 리눅스셋팅
- 리눅스세팅
- interrupt()
- StringReader
- Linux셋팅
- ID중복
- isinterrupted()
- interrupted()
- ObjectInputStream
- StringWriter
- 스레드그룸
- first-of-child
- String char[] 형변환
- 상관 서브 쿼리
- include지시자
- ThreadGroup()
- first-child
- InputDialog
- 메모리스트림
- 표현 언어
- char[] String 형변환
- MemoryStream
- 아이디중복
- Daemon()
- Linux세팅
- 상관서브쿼리
Archives
- Today
- Total
다연이네
[days07] 커넥션 풀 (Connection Pool) 본문
반응형
커넥션 풀(Connection Pool)
1. Connection 객체를 미리 풀(pool) 속에 생성해 두고 가져다 사용하고 다시 반환하는 기법
2. 톰캣 (WAS)이 제공하는 DBCP를 사용하는 방법
3. 설정
ㄱ. WEB-INF > lib tomcat-dbcp.jar 추가 (jar파일 위치 : 나는 c드라이브 apache-tomcat 속 lib 속에 존재)
ㄴ. http://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html#Oracle_8i,_9i_&_10g
<Resource
name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott"
password="tiger"
maxTotal="20" 풀이 관리하는 커넥션 객체의 최대 갯수 설정 (설정안하면8)
maxIdle="10" 풀이 보관할 수 있는 최대 유휴(접속자 없어도 10개는 만들어 두겠다) 갯수 설정 (설정안하면8)
minIdle="0" 풀이 유지할 최소 유휴 커넥션 갯수
maxWaitMillis="-1" 최대 대기 시간 설정 속성 (음수 :커넥션 객체를 얻어갈 때까지 무한정 기다리게 함)
blockWhenExhausted(boolean) 풀이 관리하는 커넥션 객체가 모두 사용중인 상태에
커넥션 객체를 요청할 때 true로 설정시 기다리게 하고
false로 설정시 NoSuchElementException 예외 발생시키는 속성
/>
ㄷ. META-INF 폴더 > context.xml 파일 추가
위 코드를 <Context>로 묶고 url 뒤에 mysid를 xe로 수정했다.
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:xe"
username="scott"
password="tiger"
maxTotal="20"
maxIdle="10"
maxWaitMillis="-1"/>
</Context>
ㄹ. web.xml
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
ㅁ. Connection con = DBConn.java - getConnection() 안쓰고 앞으로
com.util.ConnectionProvider 클래스 추가
<%@page import="javax.naming.InitialContext"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.Context"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<%
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
%>
conn=<%=conn %>
<%
conn.close(); //커넥션 풀에 반환 (닫는거x)
%>
</body>
</html>
ConnectionProvider.java
ConnectionProvider 클래스를 하나 만들어두자 (자주 사용할 것이기 때문에)
package com.util;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ConnectionProvider {
public static Connection getConnection()
throws NamingException, SQLException {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
return conn;
}//
}//
앞으로 이렇게 사용하자
<%@page import="java.sql.Connection"%>
<%@page import="com.util.ConnectionProvider"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<%
Connection con = ConnectionProvider.getConnection(); //이제 이렇게 가져올 것
%>
con = <%= con %>
<%
con.close();
%>
</body>
</html>
반응형
'JSP' 카테고리의 다른 글
[days07] 세션을 사용해서 로그인 처리(상태 관리)(회원/비회원/관리자) (0) | 2021.01.04 |
---|---|
[days07] 세션(Session) (0) | 2021.01.04 |
[days07] 쿠키를 사용해 로그인 처리(상태관리)(회원/비회원/관리자) (0) | 2021.01.04 |
[days06] 쿠키 (쿠키수정 추가 필요) (0) | 2021.01.01 |
[days05] 게시판 만들기 (0) | 2020.12.29 |
Comments