隨筆-72  評論-63  文章-0  trackbacks-0
          在部署 J2EE 應(yīng)用程序中最耗時的操作之一就要數(shù)建立到數(shù)據(jù)庫的連接了。應(yīng)用程序服務(wù)器通常提供連接高速緩存或者連接池以盡量減小這一任務(wù)所帶來的開銷。(盡管術(shù)語“連接高速緩存”和“連接池”在 JDBC 中有不同的含義,這里我們將借鑒這些術(shù)語。)

          在 Oracle Application Server Containers for J2EE 10g (OC4J) 9.0.4 中,根據(jù)數(shù)據(jù)源的類型采用了不同的連接高速緩存機(jī)制。然而,OC4J 10g 10.1.3 在數(shù)據(jù)源中引入了幾項關(guān)鍵改進(jìn),其中之一就是新的連接高速緩存機(jī)制。它是所有 Oracle 數(shù)據(jù)源的統(tǒng)一連接高速緩存機(jī)制,并提供集成的真正應(yīng)用集群 (RAC) 故障切換支持。 該機(jī)制利用了 Oracle 數(shù)據(jù)庫 10g 的新 JDBC 連接高速緩存特性。(注意:OC4J 10g 10.0.3 最近改版為 10.1.3,而且下一個公開發(fā)行版將反映這一變化。這里對 10.1.3 版的所有引用對當(dāng)前可用的 10.0.3 版也適用。)
          這篇技術(shù)說明提供了對這一新特性的詳細(xì)描述,并闡明了它在應(yīng)用程序中的用法。


          OC4J 10g 10.1.3 數(shù)據(jù)源:概要

          OC4J 10g 10.1.3 已經(jīng)簡化了數(shù)據(jù)源分類:現(xiàn)在只有兩種類型的數(shù)據(jù)源:受管理的數(shù)據(jù)源 和原生數(shù)據(jù)源。

          受管理的數(shù)據(jù)源是由 OC4J 管理的數(shù)據(jù)源。具體來講,受管理的數(shù)據(jù)源就是一個 OC4J 提供的 java.sql.DataSource 實現(xiàn),充當(dāng) JDBC 驅(qū)動程序或數(shù)據(jù)源的繞接器。J2EE 組件通過 JNDI 訪問受管理的數(shù)據(jù)源,而還不知曉該數(shù)據(jù)源竟是一個繞接器。OC4J 為受管理的數(shù)據(jù)源提供關(guān)鍵的系統(tǒng)基礎(chǔ)架構(gòu),如全局事務(wù)管理、連接高速緩存、通過 JMX 的動態(tài)配置以及錯誤處理。

          原生數(shù)據(jù)源還實現(xiàn)了 java.sql.DataSource 接口,這些數(shù)據(jù)源由 JDBC 驅(qū)動程序供應(yīng)商如 Oracle 和 DataDirect 提供。原生數(shù)據(jù)源根本不用 OC4J 繞接。

          下表歸納了受管理的和原生數(shù)據(jù)源之間的主要差異:
          受管理的數(shù)據(jù)源 原生數(shù)據(jù)源
          從數(shù)據(jù)源檢索到的連接可以參與全局事務(wù) 是


          數(shù)據(jù)源利用 OC4J 的連接池和語句高速緩存 是 否

          從通過一個 OC4J 連接代理繞接的數(shù)據(jù)源返回的連接 是 否



          連接高速緩存

          連接高速緩存(通常在中間層實現(xiàn))允許在不同的應(yīng)用程序間共享一個數(shù)據(jù)庫連接。 中間層維護(hù)著一個預(yù)先分配的物理數(shù)據(jù)庫連接池,應(yīng)用程序可以使用這些連接來與數(shù)據(jù)庫服務(wù)器交互。 當(dāng)應(yīng)用程序請求數(shù)據(jù)庫連接時,中間層首先查看連接池中是否有符合該請求的可用連接;如果有,則中間層就返回其中的一個連接。


          當(dāng)請求連接而連接高速緩存中沒有空閑的池連接實例時,則會創(chuàng)建新的池連接實例。 “空閑”的池連接實例是指該實例當(dāng)前沒有與其相關(guān)的邏輯連接實例;換言之,就是指該池連接實例的物理連接沒有使用。

          當(dāng)應(yīng)用程序關(guān)閉此連接時,中間層就會把此連接送回到池中,從而避免在發(fā)生連接請求執(zhí)行打開新數(shù)據(jù)庫連接這樣耗費(fèi)大量資源的任務(wù)。
          高速緩存中的池連接都有一些連接特性或?qū)傩裕〝?shù)據(jù)庫名、服務(wù)器名、端口號等等)。大多數(shù)連接高速緩存都包括一個連接池,其中包含用于同一數(shù)據(jù)庫和同一用戶名的一個或多個連接。

          OC4J 10g 10.1.3 數(shù)據(jù)源中的連接高速緩存
          OC4J 10g 10.1.3 數(shù)據(jù)源中的高速緩存利用了 Oracle 數(shù)據(jù)庫 10g JDBC 提供的所有新高速緩存特性 — 特別是新的隱式連接高速緩存中的特性。


          在 Oracle 數(shù)據(jù)庫 10g 之前,將 Oracle JDBC 的連接高速緩存接口命名為 OracleConnectionCache,而將其實現(xiàn)命名為 OracleConnectionCacheImpl。此高速緩存只為指定用戶名提供到特定數(shù)據(jù)庫的物理連接池的支持。在 Oracle 10g JDBC 中,不建議使用 OracleConnectionCache 接口和 OracleConnectionCacheImpl 類,從而向一個更強(qiáng)健的以性能為導(dǎo)向的體系結(jié)構(gòu)轉(zhuǎn)變。設(shè)計了新的體系結(jié)構(gòu),這樣就可以將連接高速緩存透明地集成到數(shù)據(jù)源中。

          隱式連接高速緩存是數(shù)據(jù)源的一個新的符合 JDBC 3.0 的連接高速緩存實現(xiàn)。 它通過提供對高速緩存的透明訪問,不再需要應(yīng)用程序開發(fā)人員編寫自己的高速緩存實現(xiàn)。 它還支持多用戶,并能基于用戶定義的屬性請求連接。

          隱式連接高速緩存影響著物理和邏輯連接的概念。 它使用標(biāo)準(zhǔn) OracleDataSource API 來獲得連接,并在底層應(yīng)用程序啟用高速緩存后處理連接緩存中的所有連接。物理連接是由數(shù)據(jù)庫返回的實際連接,而邏輯連接可以看作是高速緩存用于處理物理連接的句柄。

          隱式連接高速緩存還提供一個新類 — OracleConnectionCacheManager,這樣應(yīng)用程序就可以使用其豐富的管理 API 組來有效地創(chuàng)建、管理和維護(hù)連接高速緩存。應(yīng)用程序可以通過單個 OracleConnectionCacheManager 實例或者通過與高速緩存相關(guān)聯(lián)的 OracleDataSource 來管理它們的高速緩存。這些 API 廣泛應(yīng)用于 OC4J 10g 10.1.3 中。

          還為用戶提供了一個回調(diào)機(jī)制來定義高速緩存行為和確定通過用戶定義的連接屬性檢索到的確切連接。

          新的連接高速緩存機(jī)制還包括集成的為 Oracle 數(shù)據(jù)庫提供的 RAC 故障切換支持。 它通過監(jiān)聽數(shù)據(jù)庫生成的 UP/DOWN RAC 事件實現(xiàn)了與數(shù)據(jù)庫自身同步的快速、高效的連接高速緩存中連接的連接故障切換。事件發(fā)布/訂閱機(jī)制由 Oracle 通知服務(wù) (ONS) 提供。此類支持只用于 RAC 數(shù)據(jù)庫,這是由于 RAC 數(shù)據(jù)庫支持所需故障切換事件的生成。

          與 OC4J 10g 10.1.3 數(shù)據(jù)源中的新連接高速緩存相關(guān)的一些好處包括:
          驅(qū)動程序獨立
          連接高速緩存的透明訪問
          每個緩存可以有多個用戶和多個口令
          符合 JDBC 3.0 標(biāo)準(zhǔn)
          連接回收與陳舊連接的刷新
          基于屬性搜索連接
          啟用多個緩存的數(shù)據(jù)源
          連接高速緩存回調(diào)機(jī)制
          集成的對 RAC 快速連接故障切換的支持。
          應(yīng)用程序可以輕松地利用 OC4J 10g 10.1.3 數(shù)據(jù)源中的新連接高速緩存功能。 該應(yīng)用程序只需配置數(shù)據(jù)源和其連接高速緩存,從該高速緩存獲得一個連接,使用該連接實現(xiàn)一些業(yè)務(wù)邏輯,并在使用后把該連接返回該高速緩存。應(yīng)用程序還可以使用 OracleConnectionCacheManager 重新初始化一些連接屬性。基本上說,應(yīng)用程序仍將像通常那樣使用數(shù)據(jù)源,如數(shù)據(jù)源設(shè)置和查找。 此外,應(yīng)用程序?qū)⑴渲盟鼈円褂玫倪B接高速緩存。對于大部分應(yīng)用程序,這一目標(biāo)是通過對受管理的數(shù)據(jù)源及原生數(shù)據(jù)源的簡單配置屬性更改而聲明性實現(xiàn)的。對于由 Oracle 10g JDBC 提供的原生數(shù)據(jù)源,這也可以通過調(diào)用特定的連接高速緩存管理 API 以編程方式實現(xiàn)。 同樣值得注意的是,這些 API 就是 OC4J 在提供其自己的連接高速緩存時使用的 API。

          以聲明的方式配置連接高速緩存

          在 OC4J 10g 10.1.3 中,指定連接高速緩存屬性相對簡單一些。 對于大多數(shù)應(yīng)用程序來說,此種指定是在 data-sources.xml 配置文件中聲明式完成的。

          受管理的數(shù)據(jù)源
          對于受管理的數(shù)據(jù)源,配置連接高速緩存可以分兩個步驟完成:

          使用 <connection-pool> XML 元素在 data-sources.xml 中添加一個連接高速緩存,指定其所需屬性的詳細(xì)信息。
          在同一文件中的每個 <managed-data-source> XML 元素中使用“connection-pool-name”屬性,指定這個受管理的數(shù)據(jù)源用于匯聚其連接的連接高速緩存的名稱。
          第 2 步相對簡單,因此我們集中看第 1 步。<connection-pool> 元素具有以下屬性(每個屬性都是可選的,除非標(biāo)記為“必要”):

          屬性名稱 說明 默認(rèn)值
          name (Required) The name of the connection pool; must be unique


          min-connections 連接池將維護(hù)的最小連接數(shù)
          0

          max-connections 在任何給定時間能夠打開的連接的最大數(shù)量。值為 0 或小于 0(表示沒有最高限制)。
          0

          initial-limit
          在初次創(chuàng)建或重新初始化高速緩存時設(shè)置連接高速緩存的大小。當(dāng)將該屬性設(shè)置為大于 0 的值,則可以預(yù)先創(chuàng)建許多連接并可隨時使用。這個屬性通常用于在將緩存設(shè)為其最優(yōu)大小時減少“加速”時間。
          0

          used-connection-wait-timeout
          等待客戶端釋放使用的連接所需的時間(秒)。該屬性只適用于已從數(shù)據(jù)源獲得了最大數(shù)量的連接且這些連接都在使用的情形。在這種情況下,當(dāng)一個客戶端嘗試從連接池中借一個連接而所有連接都在使用中時,連接池將等待將一個連接釋放回池中。
          60

          inactivity-timeout
          將一個未使用的連接從連接池中移除前其不活動的時間(秒)
          60

          login-timeout
          此數(shù)據(jù)源在嘗試連接到一個數(shù)據(jù)庫時將等待的時間的最大值(秒)。值為零說明使用默認(rèn)的系統(tǒng)超時(如果有的話,否則不會超時)。
          0

          connection-retry-interval
          在重試一個失敗的連接嘗試前等待的間隔(秒),與“max-connnect-attempts”一起使用
          1

          max-connect-attempts
          重試進(jìn)行一個連接的次數(shù),與“connection-retry-interval”一起使用
          3

          validate-connection 表明從連接池借用一個連接時是否根據(jù)數(shù)據(jù)庫對其進(jìn)行驗證。值為“true”表明從連接池借用一個連接時,執(zhí)行由“validate-connection-statement”聲明的語句來驗證此連接是否有效;值為“false”表明從連接池借用連接時不會執(zhí)行任何語句。與“validate-connection-statement”一起使用。
          false

          validate-connection-statement
          從連接池借用連接時執(zhí)行的 SQL 語句。與“validate-connection”一起使用。


          num-cached-statements 應(yīng)該為每個連接緩存的最大語句數(shù)。任何大于 0 的值自動為數(shù)據(jù)源啟用語句緩存。
          0

          time-to-live-timeout
          一個使用的連接保持活動的最長時間(秒)。 當(dāng)這個超時時,所使用的連接會無條件地關(guān)閉,取消相關(guān)語句句柄,并將此連接返回連接池。值為 –1 表示這個特性沒有啟用。
          -1

          abandoned-connection-timeout
          只適用于 Oracle 數(shù)據(jù)庫。abandoned-connection-timeout 與 inactivity-timeout 類似,但是前者用在邏輯連接上。在設(shè)置了該屬性時,JDBC 監(jiān)視這個邏輯連接(由用戶從高速緩存借來的連接)上的 SQL 數(shù)據(jù)庫活動。例如,當(dāng)在此連接上調(diào)用 stmt.execute() 時,會注冊一個檢測信號 (heart beat) 以表示這個連接是活動的。只監(jiān)視導(dǎo)致數(shù)據(jù)庫執(zhí)行調(diào)用的地方的檢測信號以降低監(jiān)視成本。如果一個連接不活動時間已達(dá)到某一指定值,則將底層的 PooledConnection 回收并返回緩存以重新使用。默認(rèn)值為 -1,即這個特性未生效。
          -1

          disable-server-connection-pooling
          確定是否禁用應(yīng)用服務(wù)器的連接池。之所以提供這個屬性是因為一些 JDBC 驅(qū)動程序本身就提供了連接池。如果 JDBC 驅(qū)動程序是 Oracle 且驅(qū)動程序正在使用隱式連接高速緩存,則忽略這個屬性。
          false

          property-check-interval
          只適用于 Oracle 數(shù)據(jù)庫。高速緩存后臺程序線程執(zhí)行超時限制的時間間隔(秒)。
          900

          lower-threshold-limit
          只適用于 Oracle 數(shù)據(jù)庫。連接池上較低的閾值限制。默認(rèn)為 max-connections 的 20%。
          20%


          除了上面的屬性,每個 <connection-pool> 元素都必須包含一個 <connection-factory> 元素,該元素定義用于為連接池創(chuàng)建連接的連接工廠 (connection factory)。它有如下屬性(每個屬性都是可選的,除非標(biāo)記為“必要”):
          屬性名稱 說明 默認(rèn)值
          factory-class (必要)定義連接工廠 (connection-factory) 實現(xiàn)的全路徑類。它必須是 java.sql.Driver、javax.sql.DataSource、javax.sql.ConnectionPoolDataSource 或 javax.sql.XADataSource 的一個實現(xiàn)。


          url (必要)用來連接底層數(shù)據(jù)庫的 url


          user 用來連接數(shù)據(jù)庫的默認(rèn)用戶

          password
          用來連接數(shù)據(jù)庫的默認(rèn)口令


          login-timeout
          嘗試連接數(shù)據(jù)庫時等待的最長時間(秒)。值為零表示此超時使用默認(rèn)的系統(tǒng)超時(如果有的話),否則不會超時。
          0


          現(xiàn)在我們來看一些具體的例子:


          使用 XADataSource 連接工廠的受管理數(shù)據(jù)源


          <managed-data-source
          jndi-name="jdbc/ManagedXADS"
          description="Managed DataSource"
          connection-pool-name="myConnectionPool"
          name="ManagedXADS"/>

          <connection-pool
          name="myConnectionPool"
          min-connections="10"
          max-connections="30"
          inactivity-timeout="30"
          <connection-factory
          factory-class="oracle.jdbc.xa.client.OracleXADataSource"
          user="scott"
          password="tiger"
          url="jdbc:oracle:thin:@localhost:1521:oracle"/>
          <property name="nativeXA" value="true"/>
          </connection-factory>
          <!- <connection-pool> ?
          ????????
          使用 DataSource 連接工廠的受管理數(shù)據(jù)源

          <managed-data-source
          jndi-name="jdbc/ManagedDS" description="Managed DataSource"> connection-pool-name="myConnectionPool" name="ManagedDS"/>

          <connection-pool
          name="myConnectionPool"
          min-connections="10"
          max-connections="30"
          inactivity-timeout="30"
          <connection-factory
          factory-class="oracle.jdbc.pool.OracleDataSource"
          user="scott"
          password="tiger"
          url="jdbc:oracle:thin:@localhost:1521:oracle"/>
          <property name="loginTimeout" value="30"/>
          </connection-factory>
          <!- <connection-pool> ?

          原生數(shù)據(jù)源
          對于原生 Oracle 數(shù)據(jù)源,配置連接高速緩存主要是以編程的方式完成。(更多詳細(xì)信息參見接下來的部分。) 連接緩存的聲明式配置也可分兩個步驟完成:

          將“oracle.jdbc.pool.OracleDataSource”用作 data-sources.xml 中每個 <native-data-source> XML 元素的“data-source-class”屬性的值。這就是在 Oracle 10g JDBC 驅(qū)動程序中進(jìn)行隱式連接高速緩存時的數(shù)據(jù)源實現(xiàn)。
          在 <native-data-source> 內(nèi)的 <property> 元素中指定任何緩存特有的屬性來控制連接高速緩存的行為。
          對于第 2 步,下列屬性名稱可用于 <property> 元素的指定:
          名稱 類型 說明
          connectionCacheName String 高速緩存的名稱;一旦創(chuàng)建則無法更改。
          connectionCachingEnabled Boolean 是否啟用隱式連接高速緩存
          fastConnectionFailoverEnabled Boolean 是否啟用 RAC 快速連接故障切換

          下面是一個具體的例子:

          <native-data-source
          name="nativeDataSource"
          jndi-name="jdbc/nativeDS"
          description="Native DataSource"
          data-source-class="oracle.jdbc.pool.OracleDataSource"
          user="scott"
          password="tiger"
          url="jdbc:oracle:thin:@localhost:1521:oracle">
          <property name="connectionCacheName" value="ICC1"/>
          <property name="connectionCachingEnabled" value="true"/>
          <property name="fastConnectionFailoverEnabled" value="false"/>
          </native-data-source>

          以編程方式配置連接高速緩存

          受管理的數(shù)據(jù)源

          在使用受管理的數(shù)據(jù)源時,連接高速緩存是通過數(shù)據(jù)源配置文件以聲明的方式指定的。 這在“以聲明的方式配置連接高速緩存”中有詳細(xì)說明。

          原生數(shù)據(jù)源

          對于 Oracle 10g JDBC 提供的原生數(shù)據(jù)源,應(yīng)用程序有附加的選項來以編程方式配置連接高速緩存。由于高速緩存是 OC4J 10g 10.1.3 統(tǒng)一的 Oracle 數(shù)據(jù)源,從而使它并不比聲明式方法難。 有了這個選項,應(yīng)用程序又有了兩種利用連接高速緩存的方法:(1) 依賴于 OracleDataSource 中的隱式連接高速緩存行為,并在數(shù)據(jù)源上設(shè)置連接高速緩存屬性;(2) 直接使用連接高速緩存管理器 OracleConnectionCacheManager API。

          對于 (1),OracleDataSource 類為連接高速緩存屬性提供下列 setter() 和 getter() 方法:
          String getConnectionCacheName()
          void setConnectionCacheName(String cacheName)
          java.util.Properties getConnectionCacheProperties()
          void setConnectionCacheProperties(java.util.Properties cp)
          這里的每個連接高速緩存屬性對應(yīng)“以聲明的方式配置連接高速緩存”中的受管理數(shù)據(jù)源情況下的一個配置屬性 — 盡管真正的屬性名稱可能略有不同。

          資源


          OC4J 10g 10.0.3 開發(fā)人員預(yù)覽版 2
          OC4J 10g (10.0.3) 開發(fā)人員預(yù)覽版 2 已通過了 J2EE 1.4 兼容性組合測試,正式兼容 J2EE 1.4。僅用于測試與開發(fā)!

          Oracle 10g JDBC 驅(qū)動程序
          在 Oracle 10g JDBC 中,JDBC Thin、OCI 和服務(wù)器端內(nèi)部驅(qū)動程序已經(jīng)徹底重新調(diào)整了結(jié)構(gòu)以提高性能。包括 JDBC 3.0 和 J2EE 1.3 標(biāo)準(zhǔn)特性支持。

          Oracle 10g JDBC 示例代碼
          Oracle 10g JDBC 示例演示 JDBC 3.0 規(guī)范中引入的各種新特性的使用。

          Oracle 數(shù)據(jù)庫 10g JDBC 開發(fā)人員指南與參考
          Oracle 數(shù)據(jù)庫 10g JDBC 開發(fā)人員指南與參考 專門為基于 JDBC 的應(yīng)用程序和小程序的開發(fā)人員而準(zhǔn)備。

          保持連接:使用隱式連接高速緩存進(jìn)行透明的高速緩存訪問 作者:Kuassi Mensah


          對于 (2),OracleConnectionManager 提供了應(yīng)用程序可用于管理可用連接高速緩存的 API。 以下是其中的一些 API。(關(guān)于 (1) 和 (2) 的更多詳細(xì)信息,請參考 Oracle 數(shù)據(jù)庫 10g JDBC 開發(fā)人員指南與參考。)
          static OracleConnectionCacheManager getCacheManagerInstance()
          void createCache(String cacheName, javax.sql.DataSource ds, Properties cacheProperties)
          String createCache(javax.sql.DataSource ds, Properties cacheProperties)
          void removeCache(String cacheName, int mode)
          void refreshCache(String cacheName, int mode)
          java.util.properties getCacheProperties(String cacheName)
          下面的 configureDataSource 方法顯示了與高速緩存相關(guān)聯(lián)的 OracleDataSource 的一般設(shè)置。它用主機(jī)名稱、用戶名稱、密碼等的相應(yīng)值配置 Datasource。它還加載一些存儲在 Connection.properties 文件中的連接屬性:

          private void configDataSource(OracleDataSource ods) {
          ......
          /* Load the properties file to get the connection properties??
          * from the Connection.properties file
          */
          Properties prop = this.loadParams("Connection");
          ods.setDriverType("thin");
          ods.setHostName("localhost");
          ods.setNetworkProtocol("tcp");
          ods.setPortNumber?? (1521);
          ods.setUser("scott");
          ods.setPassword("tiger");
          ods.setServiceName("oracle");
          ods.setConnectionProperties(prop);
          ......
          }??

          下面的代碼演示上面的方法 (1)。 方法 initializeConnectionCacheDataSrc 啟用連接高速緩存,并且設(shè)置了高速緩存的名稱,該名稱唯一地標(biāo)識該連接高速緩存。然后它在 OracleDataSource 上設(shè)置一些連接高速緩存屬性,這些屬性將被傳遞給高速緩存。
          private void configCachingInDataSource(OracleDataSource ods)
          throws SQLException
          {
          ??......
          ods.setConnectionCachingEnabled(true);??// Enable caching
          ods.setConnectionCacheName(CACHE_NAME); // Set the cache name??

          Properties cacheProperties = new Properties();

          cacheProperties.setProperty("MinLimit", "1");?? // Set Min Limit for the Cache
          cacheProperties.setProperty("MaxLimit", "15");??// Set Max Limit for the Cache
          cacheProperties.setProperty("InitialLimit", "10");????// Set the Initial Limit??

          ods.setConnectionCacheProperties(cacheProperties);

          }

          下面的代碼演示上面的方法 (2):如何使用 OracleConnectionCacheManager 創(chuàng)建一個連接高速緩存。 createCache 方法用于創(chuàng)建高速緩存,同時用于接收 OracleDataSource 高速緩存名稱和高速緩存 Properties 對象。 請注意,連接高速緩存屬性是在創(chuàng)建連接高速緩存時設(shè)置的:
          private void initializeConnectionCache() throws Exception {
          ??..............

          OracleDataSource ods = new OracleDataSource();

          this.configureDataSource(ods);
          ods.setConnectionCachingEnabled(true);??// Enable caching

          // Initialize the Connection Cache
          OracleConnectionCacheManager connMgr =
          OracleConnectionCacheManager.getConnectionCacheManagerInstance();
          ??
          /* This object holds the properties of a cache and is passed to the
          * ConnectionCacheManager while creating the cache.
          ?? */
          Properties cacheProperties = new Properties();

          cacheProperties.setProperty("MinLimit", "1");?? // Set Min Limit for the Cache
          cacheProperties.setProperty("MaxLimit", "15");??// Set Max Limit for the Cache
          cacheProperties.setProperty("InitialLimit", "10");????// Set the Initial Limit??

          /* Create the cache by passing the cache name, data source and the
          * cache properties
          ?? */
          connMgr.createCache(CACHE_NAME, ods, properties);

          總結(jié)
          數(shù)據(jù)庫連接高速緩存是 Oracle 應(yīng)用服務(wù)器一個功能強(qiáng)大的部分。有了 Oracle 數(shù)據(jù)庫 10g 簡化的數(shù)據(jù)源配置和集成的連接高速緩存管理,OC4J 10g 10.1.3 為構(gòu)建分布式 J2EE 應(yīng)用程序提供了一個可伸縮的平臺。
          posted on 2006-06-24 20:24 船長 閱讀(626) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 平山县| 莆田市| 广水市| 和平区| 富平县| 新建县| 南郑县| 汉源县| 东平县| 义乌市| 黄山市| 河津市| 五峰| 双辽市| 达拉特旗| 米林县| 广宁县| 江城| 武山县| 平顺县| 宁波市| 麻城市| 荣昌县| 皮山县| 西宁市| 香港| 长兴县| 安康市| 佛坪县| 卓尼县| 秦皇岛市| 孝感市| 三明市| 绥棱县| 靖宇县| 天镇县| 石家庄市| 荆门市| 马公市| 福建省| 获嘉县|