java web数据源


前提:项目或者Tomcat有相应数据库的驱动程序
数据源的提出:
JDBC的操作中打开数据库连接,操作数据库,关闭数据库,每次操作只有操作可能不同,
每次都打开连接和关闭数据库,会有资源浪费的现象
数据源可以减少数据库的打开和关闭数据库的次数
原理:
    1.Connection Pool管理数据库连接    
    2.通过DataSource管理Connection Pool
    3.DataSource被JNDI Tree绑定
操作流程:
用户通过lookup在JNDI Tree上通过名称查找,找到DataSource,再由DataSource在Connection Pool中取得一个数据库连接
配置文件”TOMCAT_HOME/conf/context.xml“中在<Context>标签中添加<Recource>标签:
<Resource name="数据源的名字" type="javax.sql.DataSource">
各个参数的意义
maxActive---最大连接数
maxIdle---最大维持数(没有用户连接的时候,保持多少个连接)
maxWait---连接满的时候,用户等待的时间
username--用户名
password--密码
driverClassName--驱动程序(前提:项目或者Tomcat有相应数据库的驱动程序)
url--连接地址
eg.
<Context>
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
     maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/cilen"/>
 </Context>


使用数据源操作数据库的步骤
    注:导包(java.sql.*---->具体的sql操作使用到这个包
            javax.sql.*---->配置文件中的<Resource type="javax.sql.DataSource"属于这个包
            javax.naming.*---->在使用Context就是这个包中的,即使用lookup的时候使用的名称查找使用到这个包)
        NAME---在配置文件中<Recource name="">的name的值
        //注意:使用tomcat的时候需要对NAME进行定位.需要NAME="java:comp/env/配置文件中的name值"其他服务器不需要这样的操作
        
    1.在JNDI Tree上查找数据源
        Context context = new InitialContext();//初始化查找命名空间
        DataSource ds = (DataSource)context.lookup((NAME);//lookup()返回的是Object需要强转
    2.获得连接:
        Connection conn = ds.getConnection();
    3.业务操作
    4.conn.close()---不再是JDBC中的关闭连接,这里是表示将连接放回连接池,实际就是将这个链接标记为可用
附:官方API中这么说DataSource:
     作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法
     实现 DataSource 接口的对象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服务中注册。         

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章