使用JDNI连接数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用JDNI连接数据库

目录

本文目标

JNDI与JDBC的区别:

区别

JNDI配置步骤:

  1.配置服务器(tomcat)的conf/context.xml文件

c3p0数据库连接

druid数据库连接

    2.添加JAR包到tomcat安装目录下的lib文件夹下

    3.配置web.xml文件

java测试代码:



本文目标

在 Tomcat/TomEE 环境,编写一个 Servlet 程序,通过 JNDI 获 取 JDBC DataSource,能够获取到正常的 java.sql.Connection 对象。


JNDI与JDBC的区别:

JDBC(Java Database Connectivity):是由数据库中间服务商提供的,用于连接数据库的Java API。一组类和接口(对接数据库)。

JNDI(Java Name Directory Interface):是为应用服务器(Tomcat)管理资源所设置的目录样式的唯一标识。(数据库、网页、文档等)


区别

1.JNDI通过在Tomcat服务器的配置文件和项目的web.xml上配置参数,可以灵活、快速地获取数据库配置信息并连接。对比JDBC,当数据库参数、路径等改变时也不需要改变代码,比较灵活简单

2.请求资源的主动性不一样。JDBC是通过java程序主动去连接数据库获得连接,而JNDI是通过请求命名服务器返回数据库连接。

3.功能范围不一样。JDBC只能用来做一件事那就是连接数据库,而命名JNDI除了能和JDBC做同样的事以外还能管理当前应用服务器上的其他资源,如网页,文件等

4.请求连接数不通。JNDI连接池数高于JDBC。


JNDI配置步骤:

1.配置服务器(tomcat)的conf/context.xml文件

    添加如下节点:

    <Resource
            name="jdbc/books" 数据源名称
            auth="Container" 数据源由服务器创建
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="test"
            password="123456"
            dirverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            url="jdbc:sqlserver://localhost:1433;databasename=数据库名字"
    />

 

还可以配置连接池(如:c3p0,druid,dpcp)


c3p0数据库连接

  <Resource acquireIncrement="3" auth="Container" driverClass="com.mysql.jdbc.Driver"
    factory="org.apache.naming.factory.BeanFactory"
    idleConnectionTestPeriod="60" initialPoolSize="5"
    jdbcUrl="jdbc:mysql://rm-bp1333wl9890cb64yo.mysql.rds.aliyuncs.com:3306/cloudpay"
    maxIdleTime="1800" maxPoolSize="20" minPoolSize="5" name="jdbc/cloudpay"
    password="Uienew7812yu" type="com.mchange.v2.c3p0.ComboPooledDataSource"
    user="newolpay" />

 

druid数据库连接

<Resource factory="com.alibaba.druid.pool.DruidDataSourceFactory" filters="stat,config" 
    initialSize="1" maxActive="5" maxOpenPreparedStatements="100" maxWait="60000" 
    minEvictableIdleTimeMillis="300000" minIdle="1" name="jdbc/fico" password="NUFui12387" 
    poolPreparedStatements="true" testOnBorrow="false" testWhileIdle="true" timeBetweenEvictionRunsMillis="30000" 
    type="com.alibaba.druid.pool.DruidDataSource" url="jdbc:mysql://rm-bp1l2smvt7d6iqm05o.mysql.rds.aliyuncs.com:3306/newolpay?useSSL=false" 
    useGloalDataSourceStat="true" username="newolpay" validationQuery="SELECT 
    1 FROM DUAL" />

 

    2.添加JAR包到tomcat安装目录下的lib文件夹下

 

    3.配置web.xml文件

<!-- 读取数据库配置  -->
  <resource-ref>
  <!--  这个值是要和conf/context.xml文件中name属性值相同 -->
    <res-ref-name>jdbc/cloudpay</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

通过以上几步的配置基本完成。

java测试代码:

    try {
        Context ctx = new InitialContext();
//此处要添加的是查找数据源的名字 但是要加前缀java:comp/env
        DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/books");
        Connection conn = ds.getConnection(); //通过数据源获得数据源中的连接
        String sql = "select * from person";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        while(rs.next()){
            System.out.println(rs.getString(1));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

 

  注意:以上测试代码需要写在servlet中,因为数据源对象是在服务器(tomcat)中加载创建的,所以启动tomcat后会自动创建dataSource对象


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
128 68
|
20天前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
19天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
18天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
50 3
|
19天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
19天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
34 1
|
1月前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
49 1
|
1月前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
64 0