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);
         }
    }

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68797.html