隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創(chuàng)作品(標有[原]字樣)轉(zhuǎn)載時請注明出處,謝謝。

          常用鏈接

          常用設(shè)置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156395
          • 排名 - 390

          最新評論

          [標題]:[轉(zhuǎn)]Tomcat配置JNDI數(shù)據(jù)源
          [時間]:2009-6-12
          [摘要]:在Tomcat中配置JNDI數(shù)據(jù)源
          [關(guān)鍵字]:MySQL,JDBC,Driver,Tomcat,JNDI,DataSource
          [環(huán)境]:Tomcat6,mysql-connector-java-5.1.7-bin.jar
          [作者]:Winty (wintys@gmail.com) http://www.aygfsteel.com/wintys

          [正文]:
          1、將MySQL JDBC驅(qū)動(mysql-connector-java-5.1.7-bin.jar)放到%TOMCAT_HOME%"lib目錄下。注意,不要放到webapps/myjdbc的WEB-INF目錄中,否則可能出現(xiàn)"SQL Exception:Cannot load JDBC driver class 'com.mysql.jdbc.Driver' "。

          2、在Tomcat的webapps目錄創(chuàng)建一個工程目錄,例如myjdbc。在myjdbc目錄下創(chuàng)建META-INF目錄,在此目錄下創(chuàng)建一個context.xml文件,里面的內(nèi)容如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <Context>
              <Resource name="jdbc/mysql_ds_db"
                      auth="Container"
                      type="javax.sql.DataSource"
                      maxActive="100"
                      maxIdle="30"
                      maxWait="10000"
                      username="root"
                      password="root"
                      driverClassName="com.mysql.jdbc.Driver"
                      url="jdbc:mysql://localhost:3306/db"/>
          </Context>

          Tomcat標準數(shù)據(jù)源資源工廠配置項如下:
          * driverClassName - 所使用的JDBC驅(qū)動類全稱。
          * maxActive - 同一時刻可以自數(shù)據(jù)庫連接池中被分配的最大活動實例數(shù)。
          * maxIdle - 同一時刻數(shù)據(jù)庫連接池中處于非活動狀態(tài)的最大連接數(shù)。
          * maxWait - 當連接池中沒有可用連接時,連接池在拋出異常前將等待的最大時間,單位毫秒。
          * password - 傳給JDBC驅(qū)動的數(shù)據(jù)庫密碼。
          * url - 傳給JDBC驅(qū)動的連接URL。
          * user - 傳給JDBC驅(qū)動的數(shù)據(jù)庫用戶名。
          * validationQuery - 一個SQL查詢語句,用于在連接被返回給應(yīng)用前的連接池驗證。
          如果指定了該屬性,則必為至少返回一行記錄的SQL SELECT語句。

          3、在myjdbc目錄下創(chuàng)建WEB-INF目錄,創(chuàng)建web.xml文件,內(nèi)容如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4"
              xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

          <resource-ref>
              <description>DB Connection</description>
              <res-ref-name>jdbc/mysql_ds_db</res-ref-name>
              <res-type>javax.sql.DataSource</res-type>
              <res-auth>Container</res-auth>
          </resource-ref>

          </web-app>

          說明:
              <resource-ref>
              <descrtiption>引用資源說明</descrtiption>
              <res-ref-name>引用資源的JNDI名</res-ref-name>
              <res-type>引用資源的類名</res-type>
              <res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web應(yīng)用管理-->
              </resource-ref>

          4、測試
          JSP測試:
          <%@page contentType="text/html;charset=GBK" %>
          <%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
          2009-6-9
          測試Tomcat JNDI 數(shù)據(jù)源:<br/>
          <%
          Connection conn = null;
            try{
             //初始化查找命名空間
             Context ctx = new InitialContext();
             //InitialContext ctx = new InitialContext();亦可
             //找到DataSource,對名稱進行定位java:comp/env是必須加的,后面跟你的DataSource名
             DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql_ds_db");
             //取出連接
             conn = ds.getConnection();
              out.println("connection pool connected !!");
            } catch (NamingException e) {
              out.println("Naming Exception:" + e.getMessage());
            } catch (SQLException e) {
             out.println("SQL Exception:" + e.getMessage());
            }finally{
             if(conn != null)
                 conn.close();//注意不是關(guān)閉,是放回連接池.
            }
          %>

          或?qū)憘€JSP用標簽庫測試一下:
          <%@page contentType="text/html;charset=GBK" %>
          <%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
          <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

          <sql:setDataSource
              dataSource="jdbc/mysql_ds_db"
              var="ds" />

          <sql:query var="query" dataSource="${ds}" >
              select * from bookauthor
          </sql:query>

          <c:forEach var="row" items="${query.rows}">
              authorId:<c:out value="${row.authorId}" /><br/>
              authorName:<c:out value="${row.authorName}" /> <br/>
              <br/>
          </c:forEach>


          [參考資料]:
          [1] Tomcat配置JNDI數(shù)據(jù)源: http://www.aygfsteel.com/supercrsky/archive/2009/05/01/174931.html
          [2] Tomcat 6.0 設(shè)置 JNDI 數(shù)據(jù)源 : http://www.aygfsteel.com/Michael-Q/archive/2008/03/26/188867.html

          posted on 2009-06-12 12:43 天堂露珠 閱讀(437) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 绥阳县| 独山县| 金湖县| 临汾市| 涞源县| 洛川县| 罗田县| 文化| 许昌市| 眉山市| 嘉义县| 葵青区| 长泰县| 舟山市| 荥阳市| 廉江市| 曲松县| 海南省| 城口县| 青岛市| 镇沅| 瓮安县| 山东省| 前郭尔| 方城县| 通河县| 富宁县| 望江县| 武定县| 宝清县| 会东县| 维西| 新泰市| 临夏市| 大石桥市| 娄底市| 类乌齐县| 娱乐| 文化| 石景山区| 睢宁县|