마리아DB에서 커넥션 풀을 사용하는 방법은 어렵지않다.

기존 커넥션 풀을 만들어놨다면 그 아래에 기재하면 될 뿐이다.

 

 

API는 그대로 사용하고 connecotr 역시 mysql을 사용했다면 mysql connector를 그대로 사용해도 정상 작동된다.

 

그리고 위와 같이 기존 Resource 엘리먼트 아래에 그대로 입력해주면된다.

다만, 변경할 부분은 Resource name이 겹치면 안되니 이 부분을 변경해주고 username, password, url을 위와 같이 db에 맞게 변경을 해준다.

 

 

변경을 해줬다면 기존 JSP 코드가 있다면 거기서 name만 해당 Resource 이름으로 변경해주면 정상 작동된다.

 

커넥션 풀의 장점은 뭐니뭐니해도 이클립스로 테스트할 때와 실서버에 올릴 때 위와 같이 server.xml만 변경해놨다면 따로 jsp 파일 수정을 안해도된다.

 

1. JDBC를 사용한 JSP 데이터 베이스 연동(lib에 connector 이동, 위와 같이 코드 작성)

 

2. 커넥션 풀을 사용한 JSP 데이터 베이스 연동

위와 같이 코드작성, server.xml 수정, 자카르타 프로젝트의 DBCP API를 사용

 

위와 같이 localhost:8080(포트)/Study(webapps에 있는 폴더)/NewFile.jsp(파일명)을 입력해서 jsp 파일을 실 서버에서 구동할 수 있다.

이클립스에서 가상 웹 서버 커넥션 풀 문제를 해결 후 실 서버 톰캣 커넥션 풀을 진행하려고 하였으나

이번엔 바로 종료되는 문제가 발생하였다.

 

문제는 해결하였고 해결과정을 기재하려고한다.

 

1. JAVA_HOME, CATALINA_HOME 변수를 먼저 확인한다.

2. 변수에 문제가 없다면 server.xml에 문제가 있을 가능성이 매우 높다.

본인이 server.xml을 건드렸다면 가능성이 매우 높으니 참고하도록하자 우선 나의 경우

3. JAVA_HOME 환경 변수를 잘못 설정했을 경우(JAVA_HOME 환경 변수 경로 확인하기)

 

 

첫번째 문제 경로를 잘못 입력했을 경우 톰캣은 바로 종료된다.

그러므로 꼭 경로를 정확히 입력하도록하자.

 

두번째 문제 Context 엘리먼트에 위와 같이 경로를 설정했다면

해당 경로에 war 파일이 있어야 한다.

 

 

파일이 없으면 위와 같이 바로 종료가 된다.

 

 

자 그럼 위의 경로에 해당 server.xml에 기재된 것과 같이 war 파일을 넣어보도록하자.

 

영상처럼 정상적으로 작동되는 것을 확인할 수 있다.

마지막으로 추가 팁 이렇게 했는데도 바로 꺼진다면

톰캣이 실행중인 것일 수도 있으니 shutdown 후 해보도록하자.

오류의 경우 경우의 수가 많을 수 있으니 하나씩 소거법으로 원인을 찾아가도록하자.

이클립스와 실제 서버의 커넥션 풀 연습으로 대략 15시간 정도 소비한 것 같다...

앞으로도 이러한 오류와 마주칠 것 같지만 시간이 오래 걸린다고 두려워하지말고 즐기면서 하나씩 원인을 해결해가도록하자 ^^

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

<%@ 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