JAVA_連接池、DataSource、JNDI


1、連接池
   Connection的取得和開放是代價比較高的處理,解決這個問題的方法是連接池。
   連接池就是事先取得一定數量的Connection,程序執行處理的時候不是新建Connection,而是取得預先准備好的Connection的使用權。
 
2、DataSource
   提供連接池機能的技術叫DataSource。   Javax.sql.DataSource
   一般web服務器會提供。比如Tomcat5.5。
   DataSource可以通過new來取得,但通常是通過 JNDI 用 lookup 取得。
 
3、JNDI (Java Naming and Directory Interface)
   Java 命名和目錄服務接口(Java Naming and Directory Interface,JNDI)。
   命名服務: 可以類比為Session屬性的Map的高級版。實現指定名字的對象的,取得和登錄。一般Web服務器會提供。
   目錄服務: 和命名服務類似,但是對象的管理是層次性的。
 
   在命名服務里登錄的對象,可以用lookup()取得。
 
4、基於Tomcat利用DataSource
1)JDBC驅動配置
   直接利用JDBC編程的話,JDBC驅動放在Web app的WEB-INF/lib下就可以了。
   利用DataSource的話,JDBC需要放在app服務器的類目錄下:
         <Tomcat安裝目錄>/lib
 
2)修改context.xml文件
   在Tomcat登錄DataSource有很多辦法,在context.xml里追加<Resource>是最簡單的。
   文件: <Tomcat安裝目錄>/conf/Catalina/localhost/<ProjectName.xml>
   內容: 追加<Resource>要素
 
   Resource要素
      - name,名字。用這個名字取得DataResource
      - type,類名。一般javax.sql.DataSource
      - auth,認證種類,Application或Container。Application的話,需要寫認證代碼。
      - username
      - password
      - driverClassName,JDBC驅動的類名
      - url,JDBC的URL
 
   例如:
   <Context>
       、、、、、、
       <Resource name="jdbc/myds" auth="Container"
           type="javax.sql.DataSource"
           username="sa" password=""
           driverClassName="org.hsqldb.jdbcDriver"
           url="jdbc:hsqldb:hsql://localhost"/>
       、、、、、、
   </Context>
 
3)使用DataSource
   例子:
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
        **********
 
        try{
               InitialContext ctx = new InitialContext();
               DataSource ds = (DataSource)ctx.lookup("java:comp/env/名字");
               Connection con = ds.getConnection();
 
               *******
 
        }catch(Exception e){
               throw new ServletException(e);
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM