Develop/JavaScript JQuery JSP

0719 DBCP 커넥션풀

포페PostFace 2022. 7. 22. 19:18

커넥션풀

서버는 동시에 사용할 수 있는 사람의 수라는 개념이 존재한다.
즉 일정 수가 넘어가면 접속을 할 수 없게 된다.
접속을 하면 커넥션 객체가 생성된다.
커넥션 풀이란 커넥션 객체들을 미리 생성하고 한번에 관리하는 걸 말한다.
누군가 접속을 하게 되면 커넥션풀에서 커넥션 객체를 가져와 할당시키는것이다.
접속이 되고 나면 커넥션을 풀에 반환을 한다.

WEB-INF폴더에 jar파일을 3개 추가해주고
commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.2.jar

META-INF폴더에 
Context.xml 을 만들어준다.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource name="jdbc/OracleDB"
	auth="Container"
	type="javax.sql.DataSource"
	username="sqlid"
	password="sqlpw"
	driverClassName="oracle.jdbc.driver.OracleDriver"
	factory="org.apache.commons.dbcp.BasicDataSourceFactory"
	url="jdbc:oracle:thin:@localhost:1521:orcl"
	maxActive="500"
	maxIdle="100"/> //유지하고 있을 커넥션의 수
</Context>

dbcp.jsp

<%@page import="java.sql.ResultSet"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
dbcp.jsp<br>

<% 
	request.setCharacterEncoding("UTF-8");
	
	Connection conn=null;
	PreparedStatement ps=null;
	
	Context initContext = new InitialContext();
    //InitialContext 생성 => 이름으로 객체를 찾을 수 있기 위함
	Context envContext = (Context)initContext.lookup("java:comp/env");
    //톰캣(서버)를 찾는다.
  
	DataSource ds=(DataSource)envContext.lookup("jdbc/OracleDB");
    //xml 파일에 등록했던 이름중 OracleDB를 찾는다.
	conn=ds.getConnection();
	System.out.println("conn:"+conn);
	
	String username=request.getParameter("username");
	if(username !=null){
		int age=Integer.parseInt(request.getParameter("age"));
			
		
		String sql="insert into tdbcp values(?,?)";
		
		ps=conn.prepareStatement(sql);
		ps.setString(1,username);
		ps.setInt(2,age);
		ps.executeUpdate();
	}
%>
<h2>dbcp.jsp</h2>

<form name="myform" method="post" action="dbcp.jsp">
	이름 : <input type="text" name="username"><br><br>
	나이 : <input type="text" name="age"><br><br>
	<input type="submit" value="등록">
</form>

<hr>
<%
	String sql="select * from tdbcp";
	ps= conn.prepareStatement(sql);
	ResultSet rs=ps.executeQuery();
	while(rs.next()){
		out.print(rs.getString("username")+","+rs.getInt("age")+"<br>");
	}
	rs.close();
	ps.close();
	conn.close();
%>

'Develop > JavaScript JQuery JSP' 카테고리의 다른 글

0721 게시판의 구조 + ip주소 방식 설정  (0) 2022.07.22
0720 JSP  (0) 2022.07.22
0718 Singleton 패턴  (0) 2022.07.22
0713~15 JSP JDBC 응용을 통해 테이블 작성  (0) 2022.07.15
0712 JSP 3일차  (0) 2022.07.15