`
housheng33
  • 浏览: 239186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DBCP 数据库连接池JNDI连接 学习笔记

 
阅读更多
数据库连接池:减少数据库连接的数量提高数据库访问效率


DBCP优点:
1\速度快
2\tomcat 都默认使用DBCP,說明大众!
3\连接数控制与连接归还策略
4\应对网络不稳定的策略
5\应对连接泄漏的策略


测试环境:MyEclipse 6.5+ tomcat 6.0+ Sybase ase

1、加入DBCP包:commons-dbcp-1.4.jar   jconn3.jar

2\在tomcat content.xml 中加入
<Resource name="/jdbc/resourceName"
type="javax.sql.DataSource"
driverClassName="com.sybase.jdbc3.jdbc.SybDataSource"
url="jdbc:sybase:Tds:127.0.0.1:4001/amls"
username=""
password=""
maxActive="40"
maxIdle="2"
maxWait="50000" />

3\修改项目的web.xml
<resource-ref>
  <description>
    Resource reference to a factory for java.sql.Connection
    instances that may be used for talking to a particular
    database that is configured in the
    configurartion for the web application.
  </description>
  <res-ref-name>
    amls
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>

4\ java 调用JNDI

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.handson.dao.UserDao;
import com.handson.dto.User;

public class ConnectionProvider {
private static DataSource ds = null;
static{
try {
Context c = new InitialContext();
ds = (DataSource) c.lookup("java:/comp/env/jdbc/resourceName"); //此处默认需要加/comp/env,可以进行设置不加!
} catch (NamingException e) {
e.printStackTrace();
}

}
//以下为JDBC连接!
//Class.forName(driverName);
   // Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);

public static Connection getConnection(){
if(ds != null){
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}


}


5 获取连接JAVA:
package com.handson.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.handson.dbcp.*;
import com.handson.dto.User;

public class UserDao {
private Connection con;
public User findUserByUserName(String userName){
con = ConnectionProvider.getConnection();
String sql = "select * from userInfo where Username = ?";
PreparedStatement pst = null;
ResultSet rs = null;
User user = null;
try {
pst = con.prepareStatement(sql);
pst.setString(1, userName);
rs = pst.executeQuery();
if(rs.next()){
user = new User();
user.setHost(rs.getString("Host"));
user.setUser(rs.getString("Username"));
user.setPassword(rs.getString("Password"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
}

6测试JSP:

<body>
    <% UserDao dao = new UserDao();
    User user=dao.findUserByUserName("root");
    out.println("Host:"+user.getHost()+"<br>");
    out.println("User:"+user.getUser()+"<br>");
    out.println("Password:"+user.getPassword()+"<br>");
    %>
  </body>



TIPS:

这个上面的思路不是太清晰的,其实可以将第一步的配置文件放到项目下!
还没有完全理解透彻!






分享到:
评论

相关推荐

    Tomcat5.5连接池配置案例

    通过这份"Tomcat5.5连接池配置案例",新手可以系统学习并掌握如何在Tomcat环境中配置和使用连接池,提升应用的数据库访问效率。同时,案例笔记将帮助理解每个步骤背后的原理和最佳实践,从而更好地应对实际开发中的...

    Java数据库学习笔记

    7. **连接池**:在实际应用中,为了优化性能和资源利用,通常会使用连接池(如C3P0、HikariCP、Apache DBCP等),它预先创建并管理一组数据库连接,避免频繁创建和关闭连接。 8. **JDBC与JSP结合**:在JSP(Java...

    servlet学习笔记_JNDI.doc

    ### JNDI (Java Naming and Directory Interface)学习笔记 #### 一、JNDI简介 JNDI(Java Naming and Directory Interface),即Java命名和目录接口,是在分布式计算环境中使用的一种标准化接口,它允许Java应用...

    自己总结的学习笔记,请大家批评指正 datasource

    - **配置**:除了JNDI方式外,还可以在应用中直接配置DataSource,例如使用Apache DBCP或C3P0等第三方连接池库,通过编程方式创建和管理DataSource。 4. **数据库连接管理**: DataSource还负责处理连接的生命...

    web学习笔记 —— 数据源

    常见的数据库连接池有Apache的DBCP、C3P0,以及HikariCP等。 2. **JNDI(Java Naming and Directory Interface)**:在企业级应用中,数据源通常通过JNDI服务进行查找和注册。JNDI提供了一个统一的接口,允许应用...

    CAS单点登录学习笔记五之CAS服务器数据源

    4. 连接池实现:CAS支持多种连接池实现,如Apache Commons DBCP、C3P0、HikariCP等。每种连接池都有其特定的配置属性,如最大连接数、最小连接数、超时时间等。 5. 数据源初始化脚本:在CAS启动时,可能会执行一些...

    Tomcat学习笔记

    《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java Web应用程序。本笔记将详细阐述Tomcat的安装、配置、虚拟主机设置、JDBC数据库连接池...

    JDBC 学习笔记 JDBC 学习笔记

    - **连接池**:管理数据库连接,提高性能,如C3P0、Apache DBCP、HikariCP等。 ### 9. JDBC优化技巧 - 使用PreparedStatement代替Statement。 - 使用批处理操作批量插入。 - 尽量减少结果集大小,避免全表扫描。 -...

    JDBC 实战教程-尚硅谷学习笔记 ,2022版

    - **数据源的概念**:数据源(DataSource)是JNDI(Java Naming and Directory Interface)的一部分,提供了更高效、更安全的数据库连接管理。 **6. 高级特性** - **CallableStatement**:用于调用数据库的存储过程...

    JDBC笔记 方立勋

    最后,笔记可能会涵盖连接池的概念,如C3P0、Apache DBCP和HikariCP等,它们可以管理和复用数据库连接,提高系统性能和稳定性。 方立勋老师的JDBC笔记还会深入到JDBC的高级特性,如JDBC批处理、连接池的使用、JNDI...

    spring学习笔记3

    根据给定的文件信息,我们可以总结出以下几个关键...DBCP是Apache Commons Pool的一个子项目,提供了对数据库连接池的支持。在Spring中,可以使用`BasicDataSource`作为数据源,它同样是在XML配置文件中定义: ```xml ...

    Spring學習筆記DEMO代碼(二)

    标题中的“Spring學習筆記DEMO代碼(二)”表明这是一个关于Spring框架的第二部分学习笔记,可能包含了代码示例。描述中的“NULL”意味着没有提供额外的文本信息,但我们可以通过标签和压缩包文件名来推测内容。 ...

    jdbc_notes

    DataSource是数据库连接的工厂,它提供了更高级的特性如连接池和事务管理。 ### JDBC事务处理 JDBC支持三种事务隔离级别: - **读未提交(READ UNCOMMITTED)** - **读已提交(READ COMMITTED)** - **可重复读...

    Spring学习笔记

    DataSource是Spring与数据库交互的关键,它可以是JDBC驱动定义的数据源、JNDI查询的数据源,或者连接池如DBCP。 在Spring与iBatis集成时,DAO接口定义业务操作,实现类则包含具体的数据库操作,通常会利用...

Global site tag (gtag.js) - Google Analytics