
推 lueichun: 我現在的理解是如果成是要從連線池取得連線的話 03/26 23:17
→ lueichun: 首先在comtext.xml設定連線管理工具,相當於是 03/26 23:18
→ lueichun: new一個連線管理工具的物件在xml檔裡,這個物件的名稱 03/26 23:20
→ lueichun: 就是jdbc/xxx 之後程式要利用這個連線管理工具從連線池 03/26 23:21
→ lueichun: 取得連線,因此call initialContext(),取出剛剛new的 03/26 23:23
→ lueichun: 管理工具物件 然後再利用資料庫的名稱(jndi/xxx)找到資 03/26 23:25
→ lueichun: 料庫 回傳datasource物件 03/26 23:29
→ lueichun: 只是我在這邊就卡住了 不懂datasource物件為何可以 03/26 23:32
→ lueichun: getConnection 在JDBC對應的方法叫driverManager.getCon 03/26 23:32
→ lueichun: ection datasource跟driverManager不管怎麼看都不像 03/26 23:33
→ lueichun: 為何會有一樣的方法 03/26 23:34
推 lueichun: 自問自答一下 在JAVA程式如果要用連線池連線到資料庫 03/29 00:19
→ lueichun: 的話 SUN官方有推出相對應的規格 叫做JNDI API 這份API 03/29 00:20
→ lueichun: 是由各家伺服器去實作 我們只要拿來用就可連線到資料庫 03/29 00:21
→ lueichun: 第一步是要設定連線到資料庫的相關資訊 就是設定 03/29 00:23
→ lueichun: 連線池的內容 連線池對應到JNDI API的物件就叫做 03/29 00:26
→ lueichun: dataSource物件 所以dataSource物件本身既包含資料庫連 03/29 00:28
→ lueichun: 線資訊 也包含連線池的資訊 所以之後要取得連線的話 03/29 00:29
→ lueichun: 就要從dataSource物件取得 所以dataSource物件之所以可 03/29 00:31
→ lueichun: 以用來取得連線 就是因為其包含了連線池的資訊 03/29 00:32
推 haha02: JNDI跟連線池&DataSource沒有絕對關係 你的理解有誤 03/29 03:00
推 lueichun: 我修正一下想法 連線池是伺服器根據SUN的規範去實作的 03/29 15:50
→ lueichun: 而連線池在SUN官方是定義成DataSource物件 所以在java程 03/29 15:51
→ lueichun: 式裡面只要取得DataSource物件就等於取得連線池 而要取 03/29 15:52
→ lueichun: 得這物件 就要以這物件(連線池)的名稱搭配命名服務來取 03/29 15:54
→ lueichun: 得 命名服務可以用來取得連線池 也可以用來取得別的資源 03/29 15:55
→ lueichun: 利用這服務取得連線池後 就可以call getConnection()了 03/29 15:55
→ lueichun: 看來我前面的自問自答錯很大... 03/29 15:57