posts - 10, comments - 9, trackbacks - 0, articles - 17

          關于java連接池

          Posted on 2008-11-24 17:25 wesley1987 閱讀(833) 評論(0)  編輯  收藏 所屬分類: struts學習項目
          1.為工程配置tomcat連接池:
          配置server.xml (tomcat/conf/server.xml)在</Host>前面加上
          <Context docBase="myWebProject"" path="/myWebProject" reloadable="true">
               <Resource name="連接池名字 例:jdbc/oracle" 
                              auth="Container" 
                              type="javax.sql.DataSource"
                              factory="org.apache.common.dbcp.BasicDataSourceFactory"
                              driverClassName="oracle.jdbc.driver.OracleDriver"
                              url="jdbc:oracle:thin:@127.0.0.1:1521:NEUSOFT"
                              username="" 
                              password="" 
                              maxActive="5000"
                               maxIdle="10" 
                              maxWait="-1"/>
          </Context>
          參數說明:
          i.JNDI Name::注冊到JNDI樹上的名字(可以隨便寫)
          ii. Data Source URL:連接數據庫的URL
          iii. JDBC Driver Class:Jbdc數據庫的驅動名稱
          iv. User Name:訪問數據庫的用戶
          v. Password:訪問數據庫的密碼
          vi. Max. Active Connections:最大活躍連接數,指同時可以有多少個連接,設置為0沒有限制
          vii. Max. Idle Connections:最大空閑連接數,表示沒有數據庫連接時,連接池也必須保持最大空閑連接數,設置為0沒有限制
          viii. Max. Wait for Connection:連接建立等待時間,單位為毫秒,設置為-1無限制
          ix. Validation Query::此參數用來查詢池中的空閑連接(可以不配置)

          需要把 jdbc的包導入 tomcat的lib中 (  tomcat6/lib   tomcat5.x/commen/lib)
          oracle的包在oracle92/jdbc/classes12.jar
          ms sqlserver要用到的三個驅動包

          2。連接語句
               Context initCtx = new InitialContext();
             javax.sql.DataSource ds = (javax.sql.DataSource)initCtx.lookup("java:comp/env/連接池名字");
             conn = ds.getConnection();

          jsp中:(不推薦)
           :<sql:setDataSource dataSource="連接池名字" var="myOracleDB"/> 

                 <sql:query sql="select * from channel" dataSource="${myOracleDB}" var="channelRS"/>
                      <c:forEach items="${channelRS.rowsByIndex}" var="channel">
                              ${channel[1]}
                      </c:forEach>

          使用連接池實現的連接,只能在web服務器中運行。不能run。
          /*非連接池的一般JDBC使用*/
          Class.forName(driver);
          Connection conn = DriverManager.getConnection(url,name,password);
          stmt = conn.createStatement();
             rs = stmt.executeQuery(sql);
          ORACLE:driver :oracle.jdbc.driver.OracleDriver
                                  url:   jdbc:oracle:thin:@IP:1521:數據庫名
                                 包: oracle92/jdbc/classes12.jar
          Sqlserver:driver:com.microsoft.jdbc.sqlserver.SQLServerDriver
                          url:jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=數據庫名

          3. 連接池還有‘對所有工程配置tomcat連接池’和‘在struts中 配置struts-config.xml以配置連接池’。
                http://blog.csdn.net/angel_bear/archive/2006/06/09/784573.aspx (by angelbear)里有以上3種連接池的配置方法。


          后補 疑問:factory="org.apache.common.dbcp.BasicDataSourceFactory" 這句話回引起一個 class cannt find 的異常,尚未解決。
              大致原因可能是缺少commons-dbcp-1.2.1和commons-pool-1.3的包,此包在tomcat6中未發現,tomcat5/commen/lib下有commons-pool-1.2.jar。
              而且很多人的連接池配置語句中 沒有這句話。這句話的作用不太明白,但暫時好像不添加也能正常運行。












          主站蜘蛛池模板: 鄂温| 潞城市| 乐业县| 黎城县| 上杭县| 全南县| 永靖县| 长沙市| 营口市| 肇庆市| 绥阳县| 乌苏市| 岱山县| 郓城县| 黔江区| 年辖:市辖区| 扬中市| 苍山县| 怀集县| 禹州市| 当涂县| 石楼县| 平泉县| 会宁县| 阿合奇县| 新绛县| 玛曲县| 济南市| 青浦区| 沧源| 鹤峰县| 潞城市| 赤壁市| 宣武区| 莱阳市| 思南县| 神木县| 沙雅县| 霍州市| 盖州市| 江西省|