当前位置: 移动技术网 > IT编程>开发语言>Java > JNDI与数据库连接池

JNDI与数据库连接池

2020年07月07日  | 移动技术网IT编程  | 我要评论

  在javaweb程序中,最消耗资源的就是与数据库的交互,所以在与数据库交互上有很多方式进行优化
这次说的是通过减少建立连接与销毁连接来优化的连接池。

数据库连接池负责分配、管理和释放连接,让程序重复使用同一个连接,而不是每次都要创建新连接
数据库连接池在初始化时创建一定数量的数据库连接放到连接池中, 这个数量是设定的最小连接数,连接池都将一直保证至少拥有这么多的连接
当程序向连接池请求的连接数超过设置的最大连接数量时,这些请求将被加入到等待队列中.

下列是tomcat的数据源配置,通过JNDI去连接数据源

在tomcat目录中conf/context.xml,我的数据库是mysql8

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
    <Resource name="jdbc/zhangshuo" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" 
    username="root" password="123456" driverClassName="com.mysql.cj.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/zhangshuo?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC&amp;rewriteBatchedStatements=true"
    />
</Context>

 

name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
      为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
type:此名称所代表的类型,现在为javax.sql.DataSource
maxActive:表示一个数据库在此服务器上所能打开的最大连接数
maxIdle:表示一个数据库在此服务器上维持的最小连接数
maxWait:最大等待时间。10000毫秒
username:数据库连接的用户名
password:数据库连接的密码
driverClassName:数据库连接的驱动程序
url:数据库连接的地址

 

在项目的web.xml中连接数据源

<web-app>
    <resource-ref>
        <description>news DataSource</description>
        <res-ref-name>jdbc/zhangshuo</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

完成以上步骤就可以编写代码了
以前需要实例化的连接对象现在可以用数据源实例化

Context context=new InitialContext();
DateSource ds=()context.lookup("java:comp/env/jdbc/zhangshuo");
Connection con=ds,getConnection();

在连接后就不用关闭连接了,交给连接池管理

本文地址:https://blog.csdn.net/DT_Zhangshuo/article/details/85951340

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网