국비 42일차_1

강지수·2024년 2월 15일
0

국비교육

목록 보기
77/97

지난 시간 복습


DBCP (DataBase Connection Pool)

DBCP : DataBase Connection Pool, 수 많은 사용자의 요청에 따라 Connection이 생성되어 서버가 과부하가 걸리는 상황을 예방하기 위해 미리 일정 갯수의 Connection 을 만들어 Pool 에 저장하고, 사용자의 요청이 발생하면 Connection 을 제공하고 사용자와의 연결이 종료된다면 Pool 에 반환하여 보관하는 것



<Resource
    name="jdbc/noticeXe"
    auth="Container"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    type="javax.sql.DataSource"
    url="jdbc:oracle:thin:@localhost:1521:xe"
    username="hr"
    password="123456"
    loginTimeout="50"
    maxActive="50"
    maxIdle="20"
    maxWait="5000"
    testOnBorrow="true"
    />

Servers - Tomcat - context.xml 수정 - 위의 내용 추가


<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
	<h3>usePool.jsp</h3>

	<%
	try{
		Context initCtx=new InitialContext();
		Context envCtx=(Context)initCtx.lookup("java:comp/env");
		DataSource ds=(DataSource)envCtx.lookup("jdbc/noticeXe");
		Connection conn=ds.getConnection();
		
		String sql="select seq,title,content from notices";
		
		PreparedStatement pstmt=conn.prepareStatement(sql);
		ResultSet rs=pstmt.executeQuery();
		
		while(rs.next()){
			String seq=rs.getString("seq");
			String title=rs.getString("title");
			String content=rs.getString("content");
	%>
		<%=seq %> , <%=title %> , <%=content %> <br />
	<%
		}
        rs.close();
		pstmt.close();
		conn.close();
	}catch(Exception e){
		e.printStackTrace();
	}
	
	%>
</body>
</html>


profile
개발자 준비의 준비준비중..

0개의 댓글