728x90
-개발환경-
IDE : Eclipse IDE for Enterprise Java Developers ver-2020-06 (4.16.0) Tomcat : Tomcat v8.0 Server JAVA : JAVA8 oracle : oracle 11g |
-JDBC 방식으로 Oracle과 연결하기위한 기본설정-
Eclipse의 WEB-INF 의 lib 에 ojdbc6-12.1.0.1-atlassian-hosted.jar 삽입 (드라이버연결) |
-DBCP방식으로 Oracle과 연결하기위한 기본설정-
Eclipse의 WEB-INF 의 lib 에 commons-dbcp-1.4.jar 삽입 Eclipse의 WEB-INF 의 lib 에 commons-pool-1.5.7.jar 삽입 (commonsDBCP드라이버 클래스) Eclipse의 WEB-INF 의 lib 에 ojdbc6-12.1.0.1-atlassian-hosted.jar 삽입 (드라이버연결) Eclipse의 src 에 pool.jocl 삽입 |
-tomcatDBCP 설정-
Eclipse의 lib 폴더에 tomcat-dbcp.jar 파일을 복사한다. ( tomcatDBCP 드라이버 클래스) Eclipse의 META-INF 폴더에 context.xml 파일을 만든다.(데이터베이스 연결정보) Eclipse의 WEB-INF 의 web.xml 에 필요내용작성 |
-context.xml-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!--
name = 커넥션 풀 이름, "jdbc/" 부분은 항상 공통
type =데이터베이스 연결에 사용하는 자바 클래스 이름, 무조건 "javax.sql.DataSource" 를 사용한다.
auth = DBCP를 tomcat이 관리한다는 의미로 무조건"Container" 를 사용한다.
maxActive =데이터베이스 커넥션 풀의 최대 개수 => 최대 연결 허용 개수
maxIdle = 데이터베이스에 접속을 유지하는 데이터베이스 커넥션 풀의 최대 개수 =>
항상 연결을 유지하는 커넥션 풀의 개수
maxWait = 데이터베이스에 접속하기 위해서 기다리는 최대 시간 =>
-1작성시, 기다림없이 바로 접속한다
username = 사용자 계정 이름
password = 사용자 비밀 번호
driverClassName = 데이터베이스 드라이버 클래스 이름
url = 데이터베이스 접속을 위한 경로
-->
<Resource
name = "jdbc/TestDB"
type = "javax.sql.DataSource"
auth = "Container"
maxActive = "100"
maxIdle = "30"
maxWait = "-1"
username = "Shin"
password = "0000"
driverClassName = "oracle.jdbc.driver.OracleDriver"
url = "jdbc:oracle:thin:@localhost:1521:xe"/>
</Context>
|
cs |
-web.xml-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>0331_DBCPTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>단순설명칸) tomcat DBCP oracle Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
|
cs |
-pool.jocl-(데이터베이스 연결정보)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<object class="org.apache.commons.dbcp.PoolableConnectionFactory"
xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
<object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
<string value="jdbc:oracle:thin:@localhost:1521:xe"/>
<string value="Shin"/>
<string value="0000"/>
</object>
<object class="org.apache.commons.pool.impl.GenericObjectPool">
<object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
</object>
<object class="org.apache.commons.pool.KeyedObjectPoolFactory" null="true"/>
<string null="true"/>
<boolean value="false"/>
<boolean value="true"/>
</object>
|
cs |
-DBCP 방식과 JDBC방식의 차이-
JDBC는 데이터베이스 커넥션 인터페이스 이다.
DBCP는 DB커넥션을 어플리케이션 소스 내에서 제어하면서 DB풀을 가진다.
JNDI는 DB커넥션을 WAS단에서 제어하면서 서버에서 하나의 커넥션 풀을 가진다.
-DBUtil.java-(데이터베이스 간편연결 클래스)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package src.koreait.DbUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBUtil {
//mysql에 연결하는 Connection 을 리턴하는 메소드
public static Connection getMysqlConnection() {
Connection conn = null;
try{//드라이버는 WEB-INF/lib 에 저장
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jspam?useUnicode=true&characterEncoding=UTF-8";
//?useUnicode=true&characterEncoding=UTF-8 테이블에 한글이 들어올경우 대비해서 설정
conn = DriverManager.getConnection(url,"root","0000");
System.out.println("연결 성공 :"+conn+"<br/>");
}catch(ClassNotFoundException e){
System.out.println("드라이버 클래스가 존재 하지 않습니다 ");
}catch(SQLException e){
System.out.println("데이터베이스 연결 정보가 옳바르지 않습니다 ");
}
return conn;
}
//Oracle에 연결하는 Connection을 리턴하는 메소드
public static Connection getOracleConnection() {
Connection conn = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");//드라이버 로드 ,드라이버이름이 인자
String url="jdbc:oracle:thin:@localhost:1521:xe";//1521: 포트번호 , xe:개발자테스트용버전
conn=DriverManager.getConnection(url, "Shin", "0000");//오라클 연결 얻기
} catch (ClassNotFoundException e){
} catch (SQLException e){
}
return conn;
}
//commonsDBCP를 사용해서 oracle에 연결하는 Connection을 리턴하는 메소드
public static Connection getCommonsDBCPconnection() {
Connection conn = null;
try{
//Class.forName("com.mysql.jdbc.Driver");//mysql 드라이버
Class.forName("oracle.jdbc.driver.OracleDriver");//oracle 드라이버
Class.forName("org.apache.commons.dbcp.PoolingDriver");//commonsDBCP드라이버 클래스를 읽어온다,드라이버 로드
String url="jdbc:apache:commons:dbcp:/pool";//데이터베이스 연결정보가 저장된 파일의 경로를 지정한다.
conn=DriverManager.getConnection(url);//오라클 연결 얻기
} catch (ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e){
e.printStackTrace();
}
return conn;
}
public static Connection getTomcatDBCPConnection() {
Connection conn = null;
try{
Context initContext = new InitialContext();
/* Context envContext = (Context)initContext.lookup("java:/com/env");
DataSource dataSource = (DataSource)envContext.lookup("jdbc/TestDB"); */
//위의 주석으로 처리한 2줄을 tomcat Server 7.0부터 아래와 같이 1줄로 줄여서 사용할 수 있다.
DataSource dataSource = (DataSource)initContext.lookup("java:/comp/env/jdbc/TestDB");
conn = dataSource.getConnection();
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
//Connection을 닫아주는 메소드
public static void close(Connection conn) {
if(conn!= null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
|
cs |
-요약-
-마침글-
.
'21년이전 > 국비-JSP' 카테고리의 다른 글
JSP-파일 (0) | 2021.04.14 |
---|---|
JSP-파일업로드 (0) | 2021.04.14 |
Oracle-명령어정리 (0) | 2021.03.31 |
Jquery- AJAX 이용 (0) | 2021.03.30 |
Jquery-table (0) | 2021.03.30 |