<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Kimi's NutShell

    我荒廢的今日,正是昨日殞身之人祈求的明日

    BlogJava 新隨筆 管理
      141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks
    ?原理:
    ???????? 在DataSource中事先建立多個數據庫連接,保存在數據庫連接池中。當程序訪問數據庫時,只用從連接池中取空閑狀態的數據庫連接即可,訪問結束,銷毀資源,數據庫連接重新回到連接池,這與每次去直接訪問數據庫相比,會節省大量時間和資源。
    ???????? JNDI( Java Naming and Directory Interface ),是Java平臺的一個標準擴展,提供了一組接口、類和關于命名空間的概念。如同其它很多Java技術一樣,JDNI是provider-based的技術,暴露了一個 API和一個服務供應接口(SPI)。這意味著任何基于名字的技術都能通過JNDI而提供服務,只要JNDI支持這項技術。JNDI目前所支持的技術包括 LDAP、CORBA Common Object Service(COS)名字服務、RMI、NDS、DNS、Windows注冊表等等。很多J2EE技術,包括EJB都依靠JNDI來組織和定位實體??梢园阉斫鉃橐环N將對象和名字捆綁的技術,對象工廠負責生產出對象,這些對象都和唯一的名字綁在一起,外部資源可以通過名字獲得某對象的引用。

    ??? ?? ?? 在javax.naming的包包中提供Context接口,提供了兩個很好用的方法:
    <1> void bind( String name , Object object )
    ??? ??? 將名稱綁定到對象。所有中間上下文和目標上下文(由該名稱最終原子組件以外的其他所有組件指定)都必須已經存在。

    <2>Object lookup( String name )
    ??? ??
    檢索指定的對象。如果 name為空,則返回此上下文的一個新實例(該實例表示與此上下文相同的命名上下文,但其環境可以獨立地進行修改,而且可以并發訪問)。

    ??? ?? 外部資源訪問對象工廠中的工程圖:

    例:
    =================將以下代碼段添加到server.xml中的<Host>中============
    <!-- configure DataSource. Add the following code into server.xml -->

    <Context path="/bookstore" docBase="bookstore" debug="0"
    reloadable="true" >

    <!-- 數據源名稱 -->
    <Resource name="jdbc/BookDB"
    ?????????????? auth="Container"
    ?????????????? type="javax.sql.DataSource" />

    <ResourceParams name="jdbc/BookDB">
    ??? <parameter>
    ????? <name>factory</name>
    ????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    ??? </parameter>

    ??? <!-- Maximum number of dB connections in pool. Make sure you
    ???????? configure your mysqld max_connections large enough to handle
    ???????? all of your db connections. Set to 0 for no limit.
    ???????? -->
    <!-- 活動狀態最大連接數 -->
    ??? <parameter>
    ????? <name>maxActive</name>
    ????? <value>100</value>
    ??? </parameter>

    ??? <!-- Maximum number of idle dB connections to retain in pool.
    ???????? Set to 0 for no limit.
    ???????? -->
    <!-- 空閑狀態數據庫連接最大數 -->
    ??? <parameter>
    ????? <name>maxIdle</name>
    ????? <value>30</value>
    ??? </parameter>

    ??? <!-- Maximum time to wait for a dB connection to become available
    ???????? in ms, in this example 10 seconds. An Exception is thrown if
    ???????? this timeout is exceeded. Set to -1 to wait indefinitely.
    ??????? Maximum time to wait for a dB connection to become available
    ???????? in ms, in this example 10 seconds. An Exception is thrown if
    ???????? this timeout is exceeded. Set to -1 to wait indefinitely.
    ???????? -->
    <!-- 數據庫處于空閑狀態的最長時間 -->
    ??? <parameter>
    ????? <name>maxWait</name>
    ????? <value>10000</value>
    ??? </parameter>

    ??? <!-- MySQL dB username and password for dB connections -->
    <!-- 指定連接數據庫的用戶名及密碼 -->
    ??? <parameter>
    ???? <name>username</name>
    ???? <value>dbuser</value>
    ??? </parameter>
    ??? <parameter>
    ???? <name>password</name>
    ???? <value>1234</value>
    ??? </parameter>

    ??? <!-- Class name for mm.mysql JDBC driver -->
    <!-- 指定JDBC驅動 -->
    ??? <parameter>
    ?????? <name>driverClassName</name>
    ?????? <value>com.mysql.jdbc.Driver</value>
    ??? </parameter>

    ??? <!-- The JDBC connection url for connecting to your MySQL dB.
    ???????? The autoReconnect=true argument to the url makes sure that the
    ???????? mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
    ???????? connection. mysqld by default closes idle connections after 8 hours.
    ???????? -->
    <!-- 指定連接數據庫的URL -->
    ??? <parameter>
    ????? <name>url</name>
    ????? <value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
    ??? </parameter>
    </ResourceParams>

    </Context>
    運行機制:

    ???? 1、 首先程序代碼獲取初始化的 JNDI 環境并且調用 Context.lookup() 方法從 JNDI 服務提供者那里獲一個 DataSource 對象

    ???? 2、 中間層 JNDI 服務提供者返回一個 DataSource 對象給當前的 Java 應用程序這個 DataSource 對象代表了中間層服務上現存的緩沖數據源

    ??????3、 應用程序調用 DataSource 對象的 getConnection() 方法

    ???? 4、 DataSource 對象的 getConnection() 方法被調用時,中間層服務器將查詢數據庫 連接緩沖池中有沒有 PooledConnection 接口的實例對象。這個 PooledConnection 對象將被用于與數據庫建立物理上的數據庫連接

    ???? 5、 如果在緩沖池中命中了一個 PooledCoonection 對象那么連接緩沖池將簡單地更 新內部的緩沖連接隊列并將該 PooledConnection 對象返回。如果在緩沖池內沒 有找到現成的 PooledConnection 對象,那么 ConnectionPoolDataSource 接口將會被 用來產生一個新的 PooledConnection 對象并將它返回以便應用程序使用

    ???? 6。 中間層服務器調用 PooledConnection 對象的 getConnection() 方法以便返還一個 java.sql.Connection 對象給當前的 Java 應用程序

    ???? 7、 當中間層服務器調用 PooledConnection 對象的 getConnection() 方法時, JDBC 數據 庫驅動程序將會創建一個 Connection 對象并且把它返回中間層服務器

    ???? 8、 中間層服務器將 Connection 對象返回給應用程序 Java 應用程序,可以認為這個 Connection 對象是一個普通的 JDBC Connection 對象使用它可以和數據庫建立。事 實上的連接與數據庫引擎產生交互操作 。

    ???? 9、 當應用程序不需要使用 Connection 對象時,可以調用 Connection 接口的 close() 法。請注意這種情況下 close() 方法并沒有關閉事實上的數據庫連接,僅僅是釋 放了被應用程序占用的數據庫連接,并將它還給數據庫連接緩沖池,數據庫連接 緩沖池會自動將這個數據庫連接交給請求隊列中下一個的應用程序使用。

    posted on 2007-10-22 12:01 Kimi 閱讀(2356) 評論(7)  編輯  收藏 所屬分類: Java

    評論

    # re: JNDI 技術原理與運行機制 (轉)--精華噢 2007-10-22 16:35 vector
    毛毛,又是東拉一段,西扯一段的啊  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢[未登錄] 2008-04-08 15:54 a
    aaaaaaaa  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢 2008-10-28 16:35 tt
    暈 這也叫作機制  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢 2008-10-28 16:44 Kimi
    那應該如何叫呢,請教這位兄臺。  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢 2008-12-19 23:35 HAL
    改名叫 DATASOURCE 的JNDI 算了,這樣會誤認子弟滴~~~  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢 2009-01-07 16:10 ton
    我只想知道JNDI的運行原理,你說的我都知道,但這并非是它的原理。  回復  更多評論
      

    # re: JNDI 技術原理與運行機制 (轉)--精華噢[未登錄] 2010-11-19 17:18 dd
    什么東西哦  回復  更多評論
      

    主站蜘蛛池模板: 国产成A人亚洲精V品无码| 亚洲视屏在线观看| 一级毛片不卡片免费观看| 亚洲综合一区二区精品久久| 免费看美女让人桶尿口| 国产精品免费久久久久影院| 亚洲毛片基地日韩毛片基地| 免费国产成人午夜电影| 久久国产乱子免费精品| 精品国产亚洲AV麻豆| 亚洲国产成人一区二区精品区| 日韩免费a级毛片无码a∨| 一区二区免费电影| 亚洲伊人久久大香线蕉啊| 亚洲午夜福利精品无码| 四虎免费影院ww4164h| 一级毛片在线完整免费观看| 亚洲成人免费网址| 国产亚洲人成网站在线观看| 成人免费一级毛片在线播放视频| 亚洲天堂免费在线视频| 亚洲国产视频久久| 亚洲天堂男人天堂| 亚洲偷自拍拍综合网| 女人18毛片水最多免费观看| 午夜理伦剧场免费| 亚洲免费日韩无码系列| 亚洲精品一卡2卡3卡四卡乱码| 色婷婷亚洲十月十月色天| 亚洲人成电影网站国产精品 | 无遮挡a级毛片免费看| 亚洲日本在线看片| 久久精品国产亚洲7777| 在线免费观看国产视频| 永久免费在线观看视频| a级毛片免费全部播放无码| 国产偷国产偷亚洲高清人| 久久精品国产亚洲av麻豆蜜芽 | 亚洲AV永久青草无码精品| 亚洲 综合 国产 欧洲 丝袜| 一二三四视频在线观看中文版免费 |