# [유형1] JNDI & DataSource
# 다음과 같이 JNDI lookup을 통한 DataSource를 사용하고 있을 경우는 특별한 설정
# 없이도, 자동으로 SQL을 추적합니다.
#
# InitialContext ctx = new InitialContext();
# DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/datasource");
# Connection conn = ds.getConnection();
#
# NOTE: 다음과 같이 사용하고 있는 유형은 추적하지 못하니, 한번의 lookup()을
# 사용하는 위 유형으로 어플리케이션 소스 변경을 하셔야 합니다.
# InitialContext ctx = new InitialContext();
# Context envCtx = (Context)ctx.lookup("java:comp/env");
# DataSource ds = (DataSource)envCtx.lookup("jdbc/datasource");
# (혹은 아래에 기술한 [유형3]방식을  고려해 보세요.)
#
#==============================================================================
# [유형2]: DriverManager.getConnection()
# JDBC SQL을 추적할 때, DriverManager.getConnection() 유형을 사용하는 경우에
# 아래의 파라메터를 설정하실 수 있습니다. 예를 들면, JEUS 4.0, Apache DBCP 
# Connection Pool, 혹은 단순히 DriverManager.getConnection() 유형 등입니다. 
# JDBC URL의 앞부분을 기술하시면 됩니다. 여러개라면 ","로 구분하여 기술하시면
# 됩니다.
# ----------
# (예제1) Tmaxsoft JEUS 4.0
# Class.forName("jeus.jdbc.pool.Driver");
# Connection conn = DriverManager.getConnection("jdbc:jeus:pool:mypool");
# ==>
#user_defined_jdbc_connectionpool_prefixes=jdbc:jeus:pool
# ----------
# (예제2) Apache DBCP JDBC Connection Pool
# conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:/poolname");
# ==>
#user_defined_jdbc_connectionpool_prefixes=jdbc:apache:commons:dbcp
# ----------
# (예제3) Oracle Non-Pool사용시
# Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
# conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORACL",
#                                    "scott", "tiget");
# ==>
#user_defined_jdbc_connectionpool_prefixes=jdbc:oracle:thin
# NOTE: 단 위 (예제3)위 경우, 직접 맺고 끝는 경우가 아니라, JDBC Connection Pool
# 내부에서 자체적으로 위와같이 사용되고 있는 경우는 Connection NOT CLOSED 예외를
# 감지하지 못합니다. 따라서, [유형2]의 경우는 특별한 경우를 제외하곤 사용하지 마십시요.
# 이 경우는 어플리케이션의 ConnUtil.getConnection()와 같은 유형의 메소드를
# 확인하여 아래의 [유형3] 방식으로 전환하여 사용하십시오.
#
#==============================================================================
# [유형 3] 자체제작한 db.DBConnectionManager.java 와 같은 유형
# JDBC Connection Pool을 자체 제작하여 사용하고 있을 때, getConnection()/
# freeConnection()등과 같이 JDBC연결을 얻어오는 부분과 반환하는 클래스 및 
# 메소드를 명시적으로 등록해 줄 수 있습니다. 이러한 유틸리티 클래스는
# 프레임웍상에 하나 이상의 존재할 수 있으므로, ";"으로 구분하여 여러개를 등록할
# 수 있습니다. 예를 들면 다음과 같습니다.
# ----------
# (예제1: 웹로직 5.x/6.x )
# Driver myDriver = (Driver)Class.forName("weblogic.jdbc.pool.Driver").newInstance( );
# Connection con = myDriver.connect("jdbc:weblogic:pool:demoPool", null);
# ==>
#jdbc_connection_get = weblogic.jdbc.pool.Driver.connect(String,Properties)
# ----------
# (예제2: Hans Bergsten's DBConnectionManager Pool)
#jdbc_connection_get   = db.DBConnectionManager.getConnection(String);db.DBConnectionManager.getConnection(String,long)
#jdbc_connection_close = db.DBConnectionManager.freeConnection(String,Connection)
# ----------
# (예제3: Oracle JDBC Driver Connection Pool)
#jdbc_connection_get   = oracle.jdbc.pool.OracleConnectionCacheImpl.getConnection()
# ----------
# (예제4): Oraccle ERP stadard JDBC connection SQL추적 기능 추가(Note: justget옵션)
#  jdbc_connection_justget = oracle.apps.fnd.common.Context.getJDBCConnection()
#  jdbc_connection_close = oracle.apps.fnd.common.Context.releaseJDBCConnection(Connection,String)
#
# NOTE: 
# (1) 앞부분의 패키지명/클래스명/메소드명은 반드시 full package명이 기술되어야
#     합니다. 
#    ConnUtil.getConnection() --> com.db.ConnUtil.getConnection()
# (2) jdbc_connection_get 혹은 jdbc_connection_justget 에 설정할 getConnection()류의 메소드는
#    반드시 return type이 java.sql.Connection 이어야 합니다.
# (3)  jdbc_connection_close 에 설정된 메소드에는 인자 중에 java.sql.Connection이 반드시
#    포함되어 있어야 합니다.(위치 상관없음)
# (4) 파라메터는 다음과 같의 full package 명을 기술해도 되고, 클래스명만 기술해도
#    됩니다.
#    com.db.DBUtil.getConnection(String) == com.db.DBUtil.getConneciton(java.lang.String)
# (5) 파라메터의 변수명도 지정 가능하며 내부적으로는 무시됩니다.
#    com.db.DBUtil.getConnection(String) == com.db.DBUtil.getConneciton(String name)
# (6) jdbc_connection_get과 jdbc_connection_close 가 항상 쌍으로 존재할 필요는
#    없습니다. 예를 들어 ConnUtil.getConntion()으로 DB연결을 얻어오나 
#    conn.close()를 통해 pool로 돌려보내는 유형이라면, jdbc_connection_get만
#    등록하면 됩니다.
# (7) 단 이 [유형3]의 경우는 설정 변경시 WAS의 재기동이 필요합니다.

#-----------------------------------------
# Oracle JDBC 9.x 버전에서 JDBC 2.0 표준 API가 아닌 Oracle 종속적인 CLOB/BLOB 형을
# 어플리케션에서 명시적으로 OracleResultSet으로 캐스팅(casting)하여 사용하고 있을 때,
# ClassCastException이 발생할 수 있습니다.
# 예: CLOB clob = ((OracleResultSet)rs).getCLOB(i);
# 사실 이 경우는 Oracle 10g JDBC Driver로 바꾸고 표준 JDBC 2.0 API로 수정할 것을
# 권고드리나, 이것이 여타의 이유로 불가능할 경우는 아래의 옵션을 설정하여
# OracleResultSet으로 캐스팅이 가능하게 하실 수 있습니다. (default: false)
#enable_jdbc_oracle_dependency_used = true

'Server Enterprise > JDBC & DBCP' 카테고리의 다른 글

PreparedStatement 객체 재사용하기  (0) 2016.06.22
[Oracle] JDBC Connection  (0) 2013.07.17
Oracle DBCP Connection pool - Eclipse 환경  (0) 2013.02.07

+ Recent posts