728x90
1. Connection Pool 설정에 필요한 것!
- DBCP 라이브러리
- DB Driver 라이브러리
- Context 내에 Resource
2. DBCP 라이브러리 추가하기
톰켓 폴더 / lib / tomcat-dbcp.jar를 찾아서 프로젝트 내 WEB-INF/lib 폴더에 붙여넣기!
끝
3. DB Driver 라이브러리 추가하기
본인이 사용하는 DB 홈페이지에서 사용하는 언어에 맞는 DB Driver 다운받기
yeriel은 20200514 현재 JAVA 언어로 MySQL을 사용하고 있다.
사용하는 언어 버전에 맞춰서 다운받아서 압축을 풀고
mysql-connector-java-5.1.48.jar 파일을 복사해서 프로젝트 내 WEB-INF/lib 폴더에 붙여넣기!
4. Context 내에 Resource 추가하기
방법 1. Server.xml 이나 context.xml의 context 내에 resource 추가한다.
방법 2. 프로젝트내의 META-INF에 context.xml을 생성 한 후 context 내에 resource 추가하기
<?xml version="1.0" encoding="UTF-8"?>
<context>
<!--
Resource를 등록하여 웹에서 JNDI로 호출할 이름과 정보를 설정.
각 db의 Driver jar 필요
mariadb : org.mariadb.jdbc.Driver // jdbc:mariadb
mysql : org.gjt.mm.mysql.Driver // jdbc:mysql
-->
<Resource
name="jdbc/myCon"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/ksmart35db?autoReconnect=true&characterEncoding=UTF-8"
username="root"
password="java0000"
maxActive="100"
maxIdle="30"
maxWait="10000"
removeAbandoned="true"
removeAbandonedTimeout="60"/>
<!--
1. name : JNDI로 호출될 이름을 설정- 수정해서 바꿀수 있음
2. auth : DBCP를 관리할 관리자 (Container or Application)
3. type : 해당 resource의 return type - 이 api에서 읽겠다
4. factory : dbcp를 유용하는 관리 클래스
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이 잘못 관리되어 버려진 연결을 찾아 재활용할 것인지의 여부 설정
13. removeAbandonedTimeout : 버려진 연결로 인식할 기본 시간 설정
(초 단위로 해당 시간이 지나면 버려진 연결로 인식한다.)
-->
</context>
준비 끝
DB 호출하기
kr.or.ksmart.dbConnetion.DbConnetion.java
package kr.or.ksmart.dbConnetion;
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 DbConnetion {
public static Connection getConnetion() {
Connection conn = null;
try {
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/myCon");
conn = ds.getConnection();
}catch (SQLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return conn;
}
}
kr.or.ksmart.test.Example.java
package kr.or.ksmart.test;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ksmart.dbConnetion.DbConnetion;
@WebServlet("/Example")
public class Example extends HttpServlet {
private static final long serialVersionUID = 1L;
public Example() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection conn = DbConnetion.getConnetion();
PreparedStatement ps =null;
ResultSet rs = null;
try {
ps = conn.prepareStatement("SELECT g.g_name, g.g_price FROM tb_goods AS g WHERE g_code = 'goods_3'");
rs = ps.executeQuery();
if(rs.next()) {
System.out.println(rs.getString("g_name"));
System.out.println(rs.getString("g_price"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
요래 호출하기
반응형
'Backend > JAVA' 카테고리의 다른 글
JAVA 예외처리하기 RuntimeException (0) | 2020.05.20 |
---|---|
MVC Servlet - controller 작성하기 - Filter (0) | 2020.05.14 |
Connection Pool 이론 (0) | 2020.05.14 |
MVC Servlet - controller 작성하기 - 3 (0) | 2020.05.13 |
MVC Servlet - controller 작성하기 -2 (0) | 2020.05.13 |
댓글