커넥션 풀을 사용하려고 몇 시간을 고생했었다.

<%@ 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이므로 저 부분은 없어야된다.

그럼 수정된 코드를 아래에 표시하도록하겠다.

 

 

다만 위와 같이 수정했는데도 또 오류가 나는 경우가 있다.

이 경우 꼭 톰캣을 리스타트한 후 동일한지 확인하도록하자!!

+ Recent posts