程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JNDI定義Oracle數據源的方法

JNDI定義Oracle數據源的方法

編輯:關於JAVA

定義JNDI數據源的方法如下:

內容提要:

1、介紹

2、數據連接池的配置

3、不使用連接池的解決方案

4、Oracle數據源配置舉例

一、總體介紹 Introdution

配置JNDI數據源是配置JNDI資源的一個特例,過程和方法都差不多..

請注意:在Tomcat 5.0.x 和 Tomcat 5.5.x版本之間,JNDI資源的配置已經發生了變化,所以,如果你使用的是以上版本需要修改一下配置語法..

本文假定你已經理解了Context和Host的配置,如果沒有,請自行學習..

二、數據連接池的配置 Database Connection Pool(DBCP) Configurations

DBCP提供了對JDBC2.0的支持,如果你使用的1.4版本JVM,DBCP將支持JDBC3.0..

2.1 安裝 Installation

DBCP使用Jakarta-Commons Database Connection Pool,它依賴以下三個包:

Jakarta-Commons DBCP

Jakarta-Commons Collections

Jakarta-Commons Pool

在Tomcat的安裝目錄提供了一個集成的jar包 $CATALINA_HOME/lib/tomcat-dbcp.jar..

三、避免數據連接池洩露 Preventing DB connection pool leaks

顧名思義,數據連接池負責創建和管理數據庫連接.重用一個已經存在的數據連接要比每次都打開新建(new)一個連接效率高的多..

但連接池通常個問題:一個Web應用程序需要關閉ResultSet's,Statement's,Connections's等資源.如果應用程序關閉資源失敗,就是導致這些資源無法在被重用,即數據連接池洩露.最終如果沒有足夠的有效的連接,將導致應用程序連接失敗.

對於這個問題有個解決方法;Jakarta-Commons的DBCP可以通過配置來跟蹤、恢復那些關閉失敗的連接.不但可以恢復,而且還可以生成堆棧軌跡..

為了關閉和重用那個被遺棄的資源,可以在DBCP數據源的資源配置中加入一下屬性:

removeAbandoned="true"

當有效的數據連接低於DBCP設置的時候,就會重用被遺棄的資源..默認是false;

removeAbandonedTimeout="60"

設置被拋棄的數據連接在多少秒之後可以被刪除...默認是300秒.

logAbandoned="true"

如果想要記錄下被拋棄數據連接的堆棧軌跡可以設為true..默認false;

四、Oracle配置舉例

Tomcat只能識別*.jar文件,如果數據庫驅動為*.zip,則需要修改擴展名為jar..對於Oracle9i應該使用 oracle.jdbc.OracleDriver,因為 oracle.jdbc.driver.OracleDriver 已經不建議使用..將來也不一定支持了..

4.1 配置server.xml

<Resource name="jdbc/myoracle" auth="Container"
 type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
 url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
 username="scott" password="tiger" maxActive="20" maxIdle="10"
 maxWait="-1"/>

4.2 配置web.xml

<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

4.3 代碼示例

Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
//etc.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved