커넥션 풀을 사용하려고 몇 시간을 고생했었다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "javax.naming.*" %>
<%@ page import = "com.mysql.jdbc.Connection" %>
<%@ page import = "javax.sql.*" %>
<%@ page import = "javax.sql.DataSource" %>
<%
Connection conn = null;
PreparedStatement pstmt = null;
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/user");
conn = (Connection)ds.getConnection();
out.print(conn);
try{
String sql = "insert into test value(?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 4);
pstmt.executeUpdate();
out.print("접속성공");
} catch(Exception e){
out.print("접속실패");
e.printStackTrace();
} finally {
if(conn!=null) {conn.close();}
if(pstmt!=null) {pstmt.close();}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
위와 같은 소스코드로 실행했으나 실행시 아래와 같은 오류가 발생했다.
원인은 위 사진에 표시한 부분에 있었다.
책을 통해서 다시 한번 처음부터봤으며, 원인을 하나하나 짚어보려고한다.
추후에 동일한 실수를 반복하지않기 위해 적어놓고 연구해야겠다.
1. 너무많은 import 너무 많은 import로 오류가 발생했다 그러므로 꼭 필요한 page만 import 하도록하자.
2. DataSource, DataSource의 이름과 server.xml의 Resource name을 통해 DB driver를 불러오는 것 같다.
그러므로 두 이름은 꼭 같아야 하니 기억하도록하자.
3. (Connection) 저 부분은 없어야한다. 반환값이 Connection이므로 저 부분은 없어야된다.
그럼 수정된 코드를 아래에 표시하도록하겠다.
다만 위와 같이 수정했는데도 또 오류가 나는 경우가 있다.
이 경우 꼭 톰캣을 리스타트한 후 동일한지 확인하도록하자!!