◆ 설정하기 위한 xml 수정
(이클립스에서 web.xml , server.xml , context.xml 그리고 이클립스워크스페이스에 있는 web.xml 이렇게 수정해 줬음)
역시 글로는 무슨 말인지 모르니 그림으로 보자
아래의 그림은 이클립스를 실행 시켜서 나온 왼쪽 project explorer 이다.
※ 주의 : 이클립스의 톰캣환경과 실제 톰캣 환경과는 다르다. (정확한 표현인지 모르겠지만 암튼 그렇게 생각하자)
이클립스 - Servers 밑에 있는 context.xml, web.xml, server.xml 의 실제 경로는 필자의 경우
E:\workspace\JAVA\Servers\Tomcat v6.0 Server at localhost-config 이고,
톰캣이 설치된 폴더는 필자의 경우
C:\Program Files\Apache Software Foundation\Tomcat 6.0
본인은 실제 톰캣의 xml 파일명을 위와 같이 바꿔 버렸다. 그래도 이클립스에서 테스트 하는데 아무 문제가 없다.
하지만 실제로 돌릴때는 이클립스의 web.xml , server.xml , context.xml 와 톰캣의 web.xml , server.xml , context.xml 를 동기화 해야 한다(이클립스의 톰캣 환경과 실제 톰캣 환경과 다르다는 걸 보여주기 위해 xml뒤에 bak을 붙인것 뿐 쫓아하지 말자)
1. server.xml 설정
이클립스에서 server.xml를 연다
<GlobalNamingResources>~~~</GlobalNamingResources>
<Host><Context>~~~</Context></Host>
사이에 아래처럼 입력한다.
<Resource name="jdbc/alias"
auth="Container"
type="oracle.jdbc.pool.OracleDataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
url="jdbc:oracle:thin:@ip:port:sid"
user="오라클DB유저"
password="오라클DB비밀번호"
maxActive="20"
maxIdle="10"
maxWait="-1"/>
name = jdbc 이건 그대로 쓰고 alias는 본인이 이름 결정 <- 나중에 web.xml에 있는 alias와 context.xml에 있는 alias 모두 같아야 함(본인은 오라클의 sid를 alias로 다 통일 했음)
auth = 이것도 위에 나온데로 쓴다
type = 오라클의 경우 위에 처럼 쓴다. mysql의 경우 "javax.sql.DataSource" 이렇게 쓰나 보다 이것 땀시 하루 날렸다
driverClassName = 오라클 드라이버 똑같이 적자
factory = 오라클 데이터 소스 팩토리 똑같이 적자
url = 자신의 로컬컴에 설치한 사람은 localhost:1521:본인 sid
user="오라클유저" <- username="오라클유저" 이렇게 설명한 사이트도 있다(둘다 되는듯...)
password ="오라클 비밀번호"
maxActive="20" 대강 맥스액티브느깐 살아 있는 설정 20초인지 20분인지인듯 하고
maxIdle="10" 맥스 아이들이니깐 노는게 10초
maxWait="-1" 이건 기다리는 시간인데 -1로 되어 있어서 무제한
2. context.xml 설정
이클립스에서 context.xml를 연다
<Context>~</Context>
사이에 아래처럼 입력한다.
<ResouceLink global="jdbc/alias" name="jdbc/alias" type="oracle.jdbc.pool.OracleDataSource"/>
노란색으로 표시한 alias는 본인이 적으면 되고 물론 위에도 얘기했지만 web.xml에 있는 alias와 context.xml에 있는 alias 모두 같아야 함
어느 사이트에 보니 이클립스에서 META-INF 폴더 밑에 context.xml을 넣어 줘야 한다 그랬는데 필자은 안넣어도 됐다.
3. web.xml 설정
이클립스에서 web.xml를 연다
<webapp>~</webapp>
사이에 아래처럼 입력한다.
<resource-ref>
<description>alias</description>
<res-ref-name>jdbc/alias</res-ref-name>
<res-type>oracle.jdbc.pool.OracleDataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
description 여기에 있는 alias와 달라도 되지만 그냥 같은 걸루 적어주자
res-ref-name 딱 봐도 알겠지만 context.xml과 server.xml에 적어 준것과 똑같다
res-type 이것도 context.xml과 server.xml에 적어 준 type 과 똑같다oracle.jdbc.pool.OracleDataSource
res-auth 이것도 마찬가지 server.xml에 적어 준 auth와 같다Container
web.xml은 2개를 수정해 줬다
이클립스 Servers\Tomcat v6.0 Server at localhost-config 에 있는 것과
Study\webContent\Web-Inf 있는것(여기서 Study는 필자가 만든 폴더)
4. dbtest.jsp //연결 잘되는지 확인 소스
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="oracle.jdbc.pool.OracleDataSource" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="oracle.jdbc.pool.*" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection conn=null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
//DataSource ds = (DataSource)envCtx.lookup("jdbc/evschedule");
OracleDataSource ds = (OracleDataSource)envCtx.lookup("jdbc/evschedule");
conn=ds.getConnection();
out.println("연결되었습니다.");
} catch (NamingException e) {
out.println("예외에러!<br>");
throw new ServletException("JNDI 부분 오류", e);
}catch(Exception e){
out.println("연결실패");
e.printStackTrace();
}
%>
<br><br>--
</body>
</html>
--------------------------------------------------------------------------------------------------------