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
- EC2
- 블록체인
- tiles.xml
- docker
- CSS
- phaser
- RDS
- PL/SQL
- 도커
- 웹소켓
- AWS
- JavaScript
- websocket
- Servlet
- node.js
- JSP
- model1
- jQuery
- 배포
- SQL
- 암호화
- autowired
- HTML
- 웹게임
- 알고리즘
- Spring
- Ajax
- 비트코인
- Cookie
- express
Archives
- Today
- Total
記錄
JSP) 커넥션 풀 본문
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- maxActive : 최대 동시 대여 가능 커넥션수
maxIdle : 최소 보유 커넥션수
maxWait : 최대 대기 시간 -> 넘겼는데도 빈 커넥션이 없으면 Exception (1=5초, 180=15분)
removeAbandoned : (true) 대여시간 초과했는데 반납 안된 커넥션 처리
removeAbandonedTimeout : 대여시간 설정 ( 1=5초 60=5분 )
logAbandoned : (true) 삭제시에 로그를 남길 것인가?
validationQuery : 커넥션이 살아 있는지 체크 하는 쿼리로
오라클의 경우에는 "select 1 from dual", MySQL의 경우에는 "select 1"
testWhileIdle : (true) 커넥션에 아무런 데이터 송수신이 없을 경우
테스트를 할지 여부를 결정합니다.
timeBetweenEvictionRunsMillis : 커넥션이 쉬고 있을 때 커넥션 체크 쿼리를 실행하는
시간 간격을 설정합니다. 밀리 세컨드로 설정하며,
저보통 60000(1분)을 줍니다. -->
<Resource maxWait="-1"
maxIdle="20"
maxActive="100"
password="1004"
username="bituser"
url="jdbc:oracle:thin:@localhost:1521:XE"
driverClassName="oracle.jdbc.OracleDriver"
type="javax.sql.DataSource"
auth="Container"
name="jdbc/oracle" />
</Context>
public class boarddao {
static DataSource ds;
Connection conn;
PreparedStatement pstmt;
ResultSet rs;
static {
InitialContext ctx;
try {
ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("/jdbc/oracle");
} catch (NamingException e) {
System.out.println("lookup Fail : " + e.getMessage());
}
}
// 이제 각 함수에서 conn = ds.getConnection(); 사용하여 connection 만들고 사용
public int writeok(board boardata) throws Exception {
try {
conn = ds.getConnection(); // <- 이렇게 DataSource에서 꺼내쓴다
String sql = "insert into jspboard(idx,writer,pwd,subject,content,
email,homepage,writedate,readnum,filename,filesize,refer) values("
+ " jspboard_idx.nextval,?,?,?,?,?,?,sysdate,0,?,0,?)";
pstmt = conn.prepareStatement(sql);
// parameter 설정하기
pstmt.setString(1, boardata.getWriter());
pstmt.setString(2, boardata.getPwd());
pstmt.setString(3, boardata.getSubject());
pstmt.setString(4, boardata.getContent());
pstmt.setString(5, boardata.getEmail());
pstmt.setString(6, boardata.getHomepage());
pstmt.setString(7, boardata.getFilename());
int refer_max = getMaxRefer(conn);
int refer = refer_max + 1;
pstmt.setInt(8, refer);
int row = pstmt.executeUpdate();
return row;
}
finally {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
}
}
cf) 반환을 까먹고 안하면 비동기와 같이 계속된 요청을 하게 될 시에 프로그램이 터진다.
빌려쓰기만 하고 반환을 안했기 때문이다
'Web > JSP' 카테고리의 다른 글
JSP) html과 jsp의 경로설정 차이 (0) | 2018.03.29 |
---|---|
JSP) JSTL & EL (0) | 2018.03.26 |
JSP) 각종 객체의 생성 갯수와 범위 (0) | 2018.03.21 |
JSP) 에러페이지 (0) | 2018.03.21 |
JSP) URL, URI, URN (0) | 2018.03.20 |
Comments