2012년 8월 8일 수요일

JNDI로 DB2 연결하기 (환경설정 Tomcat7.0+DB2+Eclilpse)

1. xml 환경설정

(1) context.xml (프로젝트>Webapp>META-INF>context.xml)
------------------------------------------------------------------------------

<Context>

    중략 ... ...

<Resource name="jdbc/techLabsDS"
 auth="Container"
 type="javax.sql.DataSource"
 username="아이디입력"
 password="패스워드입력"
 driverClassName="com.ibm.db2.jcc.DB2Driver"
 url="jdbc:db2://연결할 해당 IP주소 입력:50000/DB명 입력"
 maxActive="8"
 maxIdle="4" />

</Context>
------------------------------------------------------------------------------


(2) server.xml (프로젝트>Webapp>META-INF>server.xml)
------------------------------------------------------------------------------

<GlobalNamingResources>
 
   중략 ... ...
             
              <Resource name="jdbc/techLabsDS" auth="Container"
type="javax.sql.DataSource"
username="아이디입력"
password="패스워드입력"
driverClassName="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2:// 연결할 해당 IP주소 입력 :50000/ DB명 입력 "
maxActive="8"
maxIdle="4"/ >


  </GlobalNamingResources>
------------------------------------------------------------------------------



(3) web.xml (프로젝트>Webapp>WEB-INF>web.xml)
------------------------------------------------------------------------------

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="true" version="3.0">

<resource-ref>
<description>DB Connection Pool </description>
<res-ref-name>jdbc/techLabsDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>



</web-app>
------------------------------------------------------------------------------


(4) 위 1, 2, 3 에서 주의사항!!

  - url 입력 시 localhost 보다는 IP주소를 입력하는 것이 잘 연결된다. (내 경우에는 무조건 에러 발생)
  - Resource name 이나 res-ref-name dp 에 있는 명칭은 반드시 똑같이 한다. (이걸로 연결하기 때문에..)



(5) jsp 작성
------------------------------------------------------------------------------

<%@ page import="java.sql.*, javax.naming.*,
javax.naming.Context, javax.naming.InitialContext, javax.sql.DataSource" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>
</head>
<body>
테스트

<%
Statement stmt = null;
ResultSet rs = null;
Connection con = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env/");
DataSource ds = (DataSource)envCtx.lookup("jdbc/techLabsDS");
con = ds.getConnection();
out.write("DBCP Connection. <br><br>");
String sQuery = "sql 구문 입력";
stmt = con.createStatement();
rs = stmt.executeQuery(sQuery);
while (rs.next()) {
   out.write(rs.getString(1) + "\t");
   }
}catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try {rs.close();} catch (Exception ex2) {}
if (stmt != null) try {rs.close();} catch (Exception ex3) {}
if (con != null) try {rs.close();} catch (Exception ex4) {}
}
%>
</body>
</html>
------------------------------------------------------------------------------
위 색칠된 부분이 연결 부분임
(굵은 글씨는 에러가 가장 많이 발생되는 부분으로, 에러 발생 시 이 부분을 중점적으로 수정하면 된다.)




댓글 없음:

댓글 쓰기