Tomcatc3p0配置jnid数据源2种实现方法解析

Tomcat+c3p0配置jndi数据源2种实现方法解析

Java Web应用中,使用数据库是非常常见的需求。而常用的JDBC操作数据库的方式,需要手动处理连接的获取、释放、连接池的创建和维护等操作。为了简化这些操作并提供更好的性能表现,我们可以使用连接池,而c3p0就是常用的Java连接池之一。不过在Tomcat中,我们可以使用J2EE规范对数据源进行配置并使用,而这就需要使用Tomcat提供的JNDI机制来管理数据源。

本文将会介绍Tomcat+c3p0配置JNDI数据源的两种实现方法。

方法一:使用Tomcat提供的配置文件

  1. 在Tomcat的conf目录下,新建一个名为catlina.properties的文件,加入以下配置:

    ```

    数据库URL

    db.url=jdbc:mysql://localhost:3306/test

    数据库用户名

    db.username=root

    数据库密码

    db.password=123456

    数据库驱动类

    db.driverClassName=com.mysql.jdbc.Driver

    初始连接池大小

    db.initialPoolSize=5

    最小空闲连接数

    db.minPoolSize=5

    最大连接池大小

    db.maxPoolSize=20

    最大闲置时间,单位是秒,默认值为0,表示无限制

    db.maxIdleTime=0

    获取连接的最长等待时间,单位是毫秒,默认值为0,表示无限制

    db.checkoutTimeout=0

    最大连接使用次数,默认值为0,表示无限制

    db.maxConnectionAge=0

    连接池重置时间,单位是秒,默认值为120,表示2分钟

    db.idleConnectionTestPeriod=120

    连接池中连接出现错误时的重试次数

    db.acquireRetryAttempts=1

    连接池中连接出现错误时的重试间隔时间,单位是毫秒

    db.acquireRetryDelay=1000
    ```

  2. 在Tomcat的conf目录下,新建一个名为context.xml的文件,加入以下配置:

    <Context>
    <!-- 数据源JNDI名称 -->
    <Resource name="jdbc/dbpool" auth="Container" type="javax.sql.DataSource"
    driverClassName="${db.driverClassName}"
    url="${db.url}"
    username="${db.username}"
    password="${db.password}"
    maxActive="${db.maxPoolSize}"
    maxIdle="${db.minPoolSize}"
    minIdle="${db.minPoolSize}"
    maxWait="-1"/>
    </Context>

    在这个配置中,将Tomcat提供的JNDI机制与c3p0数据源相关属性结合,定义了一个名为jdbc/dbpool的JNDI数据源。

  3. 在Java Web应用的META-INF目录下,新建一个名为context.xml的文件,并加入以下配置:

    <Context>
    <ResourceLink name="jdbc/dbpool"
    type="javax.sql.DataSource"
    global="jdbc/dbpool"/>
    </Context>

    在这个配置中,定义了一个ResourceLink元素,将JNDI名称jdbc/dbpool映射到全局环境中。这样,应用就可以通过这个名称找到数据源并使用它了。

  4. 在Java Web应用中,在需要使用数据源的Java类中加入以下代码:

    try {
    // 通过JNDI名称获取数据源
    Context ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/dbpool");
    // 获取连接
    Connection con = ds.getConnection();
    } catch (NamingException | SQLException e) {
    e.printStackTrace();
    }

    在这个代码中,首先通过InitialContext来获取数据源,然后调用其getConnection()方法获取一个连接。

方法二:在Java Web应用中直接配置数据源

  1. 在Java Web应用中,加入c3p0的相关依赖,并加入以下配置:

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass"
    value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />
    <property name="user" value="root" />
    <property name="password" value="123456" />
    <property name="initialPoolSize" value="5" />
    <property name="minPoolSize" value="5" />
    <property name="maxPoolSize" value="20" />
    <property name="maxIdleTime" value="0" />
    <property name="checkoutTimeout" value="0" />
    <property name="maxConnectionAge" value="0" />
    <property name="idleConnectionTestPeriod" value="120" />
    <property name="acquireRetryAttempts" value="1" />
    <property name="acquireRetryDelay" value="1000" />
    </bean>

    在这个配置中,我们使用了Spring的配置方式来定义c3p0数据源,并将其命名为dataSource。

  2. 在需要使用数据源的Java类中,注入dataSource,并使用它来获取连接:

    ```
    @Autowired
    private DataSource dataSource;

    public void someMethod() {
    try {
    // 获取连接
    Connection con = dataSource.getConnection();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    ```

    在这个代码中,首先通过@Autowired注解将dataSource自动注入到Java类中,然后调用其getConnection()方法获取一个连接。

以上就是Tomcat+c3p0配置JNDI数据源的两种实现方法,希望对你有所帮助。

示例1:使用Tomcat提供的配置文件的方式

我在Tomcat的conf目录下新建了一个名为catlina.properties的文件,并加入以下配置:

# 数据库URL
db.url=jdbc:mysql://localhost:3306/test
# 数据库用户名
db.username=root
# 数据库密码
db.password=123456
# 数据库驱动类
db.driverClassName=com.mysql.jdbc.Driver
# 初始连接池大小
db.initialPoolSize=5
# 最小空闲连接数
db.minPoolSize=5
# 最大连接池大小
db.maxPoolSize=20
# 最大闲置时间,单位是秒,默认值为0,表示无限制
db.maxIdleTime=0
# 获取连接的最长等待时间,单位是毫秒,默认值为0,表示无限制
db.checkoutTimeout=0
# 最大连接使用次数,默认值为0,表示无限制
db.maxConnectionAge=0
# 连接池重置时间,单位是秒,默认值为120,表示2分钟
db.idleConnectionTestPeriod=120
# 连接池中连接出现错误时的重试次数
db.acquireRetryAttempts=1
# 连接池中连接出现错误时的重试间隔时间,单位是毫秒
db.acquireRetryDelay=1000

然后在Tomcat的conf目录下新建了一个名为context.xml的文件,并加入以下配置:

<Context>
    <!-- 数据源JNDI名称 -->
    <Resource name="jdbc/dbpool" auth="Container" type="javax.sql.DataSource"
        driverClassName="${db.driverClassName}"
        url="${db.url}"
        username="${db.username}"
        password="${db.password}"
        maxActive="${db.maxPoolSize}"
        maxIdle="${db.minPoolSize}"
        minIdle="${db.minPoolSize}"
        maxWait="-1"/>
</Context>

最后,在Java Web应用的META-INF目录下新建一个名为context.xml的文件,并加入以下配置:

<Context>
    <ResourceLink name="jdbc/dbpool"
        type="javax.sql.DataSource"
        global="jdbc/dbpool"/>
</Context>

示例2:在Java Web应用中直接配置数据源

我在Java Web应用中加入了c3p0的相关依赖,并加入以下配置:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
    <property name="driverClass"
              value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />
    <property name="user" value="root" />
    <property name="password" value="123456" />
    <property name="initialPoolSize" value="5" />
    <property name="minPoolSize" value="5" />
    <property name="maxPoolSize" value="20" />
    <property name="maxIdleTime" value="0" />
    <property name="checkoutTimeout" value="0" />
    <property name="maxConnectionAge" value="0" />
    <property name="idleConnectionTestPeriod" value="120" />
    <property name="acquireRetryAttempts" value="1" />
    <property name="acquireRetryDelay" value="1000" />
</bean>

然后,在需要使用数据源的Java类中注入dataSource,并使用它来获取连接:

@Autowired
private DataSource dataSource;

public void someMethod() {
    try {
        // 获取连接
        Connection con = dataSource.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
阅读剩余 83%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Tomcatc3p0配置jnid数据源2种实现方法解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java运用SWT插件编写桌面记事本应用程序

    Java运用SWT插件编写桌面记事本应用程序 简介 SWT(Standard Widget Toolkit)是一种Java库,它提供了一组本地GUI控件,使开发者可以使用本地的GUI控件制作图形用户界面。SWT的特点是高效和快速响应,可以充分利用本地操作系统的GUI库。 本篇攻略将详细介绍如何使用SWT插件编写一个桌面记事本应用程序。 步骤 步骤一:准备SW…

    Java 2023年5月23日
    00
  • 微信小程序 navigator 跳转url传递参数

    首先需要明确一点,微信小程序的 navigator 组件是用来导航跳转到其他页面的,而传递参数需要借助小程序的事件系统和路径解析规则来实现。 一、使用 query 参数 1.在跳转页面时设置 query 参数。例如: wx.navigateTo({ url: ‘/pages/detail/detail?id=123&name=apple’ }) 2.…

    Java 2023年5月30日
    00
  • maven install报错中程序包xxx不存在的问题解决

    这里是“maven install报错中程序包xxx不存在的问题解决”的完整攻略。 问题描述 在使用Maven构建项目时,有时候会遇到类似如下错误信息: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-co…

    Java 2023年5月19日
    00
  • python中jieba库(中文分词库)使用安装教程

    下面是“Python中jieba库使用安装教程”的完整攻略。 简介 jieba是一款优秀的Python中文分词库,可实现中文文本的分词和词性标注。同时,jieba还支持自定义词典,可根据具体需求进行分词。 安装 方法一:使用pip安装 使用pip安装是比较常见的方法,可在命令行窗口中输入以下命令: pip install jieba 方法二:源码安装 使用源…

    Java 2023年5月19日
    00
  • Java的web开发中SSH框架的协作处理应用笔记

    Java的web开发中SSH框架的协作处理应用笔记 SSH框架简介 SSH框架是指Struts2与Spring框架和Hibernate框架的结合。其中,Struts2作为MVC框架,Spring作为IoC容器和AOP框架,Hibernate作为ORM框架。SSH框架的优点在于可以有效地分离前端展示、业务处理和数据存储。同时,SSH框架也提供了许多方便的工具和…

    Java 2023年5月20日
    00
  • Java中的Graphics2D类基本使用教程

    接下来我将为你详细讲解Java中的Graphics2D类基本使用教程。Graphics2D类是Java图形库中比较重要的一个类,它可以用于绘制二维图形,包括直线、多边形、文字、图像等等。Graphics2D类是Graphics类的子类,它可以在Graphics基础上提供更丰富和更高级的图形绘制功能。 1. Graphics2D类的创建 要使用Graphics…

    Java 2023年5月26日
    00
  • 整理的比较全的一句话后门代码(方面大家查找后门)

    如何查找后门: 首先,要清楚什么是后门代码。后门代码是指程序员为了方便自己的管理而在程序中设置的留口,可以快速地绕过正常的登录验证方式,对系统的安全造成威胁。一些常见后门代码的特征包括容易被搜索的字符序列,包含明显的登录验证过程,并且能与一个远程服务器进行通信等。 在代码中搜索常用的后门代码字符串。一些常见的后门代码包括“eval”,“base64_deco…

    Java 2023年6月15日
    00
  • 微信小程序的引导页实现代码

    下面我将详细讲解微信小程序的引导页实现代码的完整攻略。 引导页介绍 引导页是我们打开小程序时的第一屏,通常用于向用户介绍应用程序功能和使用方法,提高用户的使用率。引导页的设计符合产品风格与用户喜好、功能简介精炼易懂,同时也需要具有一定的美感。 引导页实现步骤 以下为实现引导页的步骤: 创建基本界面 原生或者自定义组件都可以满足需求。此处我选择使用原生组件,创…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部