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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Tomcat配置JNDI數據源

    經過3個多小時的努力,配置JNDI數據源(主要是通過DBCP連接池)終于搞定~
    還是Tomcat官方的說明好,不過全是英文的,大概還看得懂.
    百度上那么花花綠綠的太多了,一個也沒成功?。?br /> 本例使用的數據庫為Ms SQL Server 2000,對于其它數據庫只是修改一下相應的參數即可,
    服務器是Tomcat5.5, 與之間的版本配置連接池最簡便
    自己總結了一下,希望起到一個拋磚引玉的作用

    總結:
    第一步:

    將驅動程序(jar包)放到tomcat安裝目錄下的common\lib文件夾下
    第二步:

    在Tomcat的webapps目錄隨便創建一個工程目錄,例如myjdbc。在myjdbc目錄下創建META-INF目錄,在此目錄下創建一個context.xml文件,里面的內容如下:

    <?xml version="1.0" encoding="UTF-8"?> 
    <Context>

     
    <Resource name="jdbc/test" 
      auth
    ="Container"
     
      type
    ="javax.sql.DataSource"

             maxActive
    ="100" 
      maxIdle
    ="30"
     
      maxWait
    ="10000"

             username
    ="sa" password="" 
      driverClassName
    ="net.sourceforge.jtds.jdbc.Driver"

             url
    ="jdbc:jtds:sqlserver://localhost/pubs"/>
     
    </Context>

     

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


    jdbc/test是數據源的名稱(隨意寫,要和web.xml文件中 <res-ref-name>jdbc/test</res-ref-name> 一樣即可),
    其他的參數按照自己的實際情況進行修改,例如數據庫的名稱、賬號、密碼。

    第三步:

    在myjdbc目錄下創建WEB-INF目錄,創建web.xml文件,內容如下:

    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app 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"
     
    version
    ="2.4">
     

        
    <resource-ref>
     
            
    <description>DB Connection</description>
     
            
    <res-ref-name>jdbc/test</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應用管理-->
    </resource-ref>
    第四步:

    寫個jsp,試一下吧!

    <%@ page contentType="text/html;charset=utf-8"%>
    <%@ page import="java.sql.*,javax.sql.*,javax.naming.*,com.DBConnection" %>
    <%
      try
      {
       
    //初始化查找命名空間
       Context ctx 
    = new
     InitialContext(); 
       
    //InitialContext ctx = new
     InitialContext();亦可 
       
    //找到DataSource,對名稱進行定位java:comp/
    env是必須加的,后面跟你的DataSource名
       DataSource ds 
    = (DataSource)ctx.lookup("java:comp/env/jdbc/test"
    );
       
    //
    取出連接
       Connection conn 
    =
     ds.getConnection();
    System.out.println(
    "connection pool connected !!"
    );   
      } catch (NamingException e) {
       System.out.println(e.getMessage());
      } catch (SQLException e) {
       e.printStackTrace();
      }finally
      {
       
    //
    注意不是關閉,是放回連接池.
       conn.close();
      }

    }
    %>


    或寫個JSP用標簽庫測試一下:

    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    <sql:query var="rs" dataSource="jdbc/test">
    select * from authors
    </sql:query>

    <html>
      
    <head>
        
    <title>DB Test</title>
      
    </head>
      
    <body>
    <c:forEach var="row" items="${rs.rows}">
        ${row.city}
    <br/>
    </c:forEach>
      
    </body>
    </html>

     

    我成功了!Good Luck!
    以下是配置JNDI的其他方法,個人不建議使用,因為修改服務器的
    server.xml和web.xml,如果有一點錯誤,你的容器就會崩潰~

    注:連接數據源的方法還有很多,在這里我簡要說之:
    比如說第二步還可以這么做:

    在/tomcat/conf/Catalina/localhost(或其它主機名)/中添加以
    虛擬目錄名稱(你的工程名)命名的XML文件來配置context.
    比如我的主機下有個目錄dbpool其地址為tomcat/webapps/test我可以這樣來配置這個上下文:
    在tomcat/conf/Catalina/localhost/目錄下創建test.xml文件,內容和上面一樣.

    還可以:
    在/tomcat/conf/server.xml中<host></host>標簽之間添加
       
     

    <Context path="/test" docBase="test"
            debug
    ="5" reloadable="true" crossContext="true">
      
    <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
                   maxActive
    ="100" maxIdle="30" maxWait="10000"
                   username
    ="javauser" password="javadude" driverClassName="net.sourceforge.jtds.jdbc.Driver"
                   url
    ="jdbc:jtds:sqlserver://localhost/pubs"/>
    </Context>

     

    其中path是你的工程路徑(相對或絕對亦可),其中docBase="test"說明,此主機已經指向到webapps目錄下了,回頭
    來看test這個上下文,它實際目錄是位于webapps的目錄下的,所以
    在Context中我們可以將docBase直接設置為test了。如果它在webapps/dbpool/test下,則設置為dbpool/test就可以了。

    附:JNDI——Java Naming and Directory Interface是一套提供naming和 directory功能的 API,
    Java應用程式開發者透過使用 JNDI,在naming和 directory方面的應用上就有了共通的準則.



    posted on 2008-01-13 08:28 々上善若水々 閱讀(29562) 評論(3)  編輯  收藏 所屬分類: JavaWeb

    評論

    # re: Tomcat配置JNDI數據源  回復  更多評論   

    hao !
    2009-05-01 21:08 | guolu

    # re: Tomcat配置JNDI數據源  回復  更多評論   

    非常感謝?。?!
    2009-05-24 15:16 | dellyn

    # re: Tomcat配置JNDI數據源  回復  更多評論   

    謝謝啊,我解決了
    2011-04-13 21:34 | gaofeng
    主站蜘蛛池模板: 国产大片线上免费观看| 亚洲精品高清国产麻豆专区| www视频在线观看免费| 一级毛片在线免费视频| 亚洲色大成网站www| 777亚洲精品乱码久久久久久| 亚洲综合亚洲综合网成人| 日本免费网站观看| 好先生在线观看免费播放| 99re免费视频| 久爱免费观看在线网站| 久久久久久毛片免费看| 成人嫩草影院免费观看| 国产成人高清亚洲一区久久| 亚洲粉嫩美白在线| 亚洲大成色www永久网址| 亚洲日本久久久午夜精品| 亚洲精品美女在线观看| 亚洲国产一区国产亚洲| 亚洲国产一区二区a毛片| 久久亚洲国产视频| 亚洲人成影院在线| 亚洲午夜精品久久久久久人妖| 欧洲亚洲国产清在高| 亚洲va国产va天堂va久久| 亚洲av中文无码乱人伦在线r▽ | 亚洲精品私拍国产福利在线| 最新国产AV无码专区亚洲| 国产日产亚洲系列| 亚洲人成网亚洲欧洲无码久久| 国产亚洲欧洲Aⅴ综合一区| 亚洲中文字幕在线观看| 精品亚洲永久免费精品| 亚洲精品tv久久久久久久久 | 成年免费大片黄在线观看com| 黄色三级三级免费看| 特级毛片全部免费播放a一级| 国产成人高清亚洲一区91| 有色视频在线观看免费高清在线直播| ssswww日本免费网站片| 中文日本免费高清|