tomcatjdbc适配华为云&Gaussdb

举报
yd_243587097 发表于 2024/11/18 18:21:34 2024/11/18
【摘要】 Tomcat JDBC 是 Apache Tomcat 提供的一种 JDBC 连接池实现,专门用于高效地管理数据库连接。它是 Tomcat 服务器的内建连接池,可以独立使用,也可以作为 Tomcat 内部的数据库连接池进行集成。Tomcat JDBC 的目标是提供一个稳定、性能良好的连接池实现,特别是在 Web 应用中,能够支持高并发的数据库操作。主要特点: 1. 高性能:Tomcat JD...

Tomcat JDBC 是 Apache Tomcat 提供的一种 JDBC 连接池实现,专门用于高效地管理数据库连接。它是 Tomcat 服务器的内建连接池,可以独立使用,也可以作为 Tomcat 内部的数据库连接池进行集成。Tomcat JDBC 的目标是提供一个稳定、性能良好的连接池实现,特别是在 Web 应用中,能够支持高并发的数据库操作。

主要特点:

1. 高性能

Tomcat JDBC 连接池基于 Tomcat 服务器的内部优化,能够处理大量的并发数据库请求。它在设计时注重性能,尤其是在连接的获取和释放上做了许多优化。

2. 内存管理

通过精细的连接池管理,Tomcat JDBC 连接池能有效地减少内存占用,提升系统的稳定性和性能。

3. 灵活配置

Tomcat JDBC 提供了丰富的配置选项,允许开发者根据实际需求对连接池进行高度定制化配置。可以设置最大连接数、最大等待时间、连接泄漏检测等。

4. 简单易用

由于其简单的配置方式,Tomcat JDBC 非常适合快速集成到基于 Tomcat 的应用中。它的配置文件非常直观,且与 Tomcat 本身的配置文件结构保持一致。

5. 连接泄漏检测

Tomcat JDBC 提供了连接泄漏检测功能,能够在连接长时间未关闭时报告警告,有助于避免连接泄漏问题。

6. 回收机制

Tomcat JDBC 会定期回收过期的连接,并且支持通过配置项控制连接的生命周期和最大空闲时间,避免过期连接占用资源。

主要配置项:

Tomcat JDBC 连接池的配置项可以在 context.xmlserver.xml 中进行设置,常见的配置项有:

driverClassName:设置 JDBC 驱动的类名。

url:设置数据库连接的 URL。

usernamepassword:设置数据库的用户名和密码。

maxTotal:设置连接池中最大的连接数。

maxIdle:设置连接池中最大的空闲连接数。

minIdle:设置连接池中最小的空闲连接数。

maxWaitMillis:设置获取连接的最大等待时间(毫秒)。

validationQuery:设置用于测试连接是否有效的 SQL 查询语句。

validationInterval:设置验证连接有效性的时间间隔(毫秒)。

testOnBorrowtestOnReturn:设置在借用或归还连接时是否进行有效性检查。

timeBetweenEvictionRunsMillis:设置进行空闲连接清理的周期(毫秒)。

removeAbandonedTimeout:设置多久未关闭的连接被视为泄漏连接。

leakDetectionThreshold:设置连接泄漏的阈值,超过该时间未关闭的连接会被检测为泄漏。

优势:

高效的连接池管理:与传统的数据库连接池相比,Tomcat JDBC 提供了更多的性能优化选项,特别是在并发场景下。

集成简单:作为 Tomcat 的一部分,它的集成非常容易。对于使用 Tomcat 的 Web 应用,Tomcat JDBC 是默认且推荐的选择。

稳定性强:经过 Tomcat 官方团队的维护和优化,具有较强的稳定性,适合长时间运行的 Web 应用。

灵活性:通过丰富的配置项,可以根据需求进行个性化配置,如设置连接池大小、连接有效性检查、回收机制等。

使用场景:

Tomcat JDBC 适合于高并发的 Web 应用、企业级系统以及需要处理大量数据库连接的应用场景。由于其与 Tomcat 的高度集成,对于 Tomcat 用户来说,它是一个理想的连接池选择。

总结来说,Tomcat JDBC 是一个高效、灵活且稳定的 JDBC 连接池,适用于基于 Tomcat 的应用程序。它能够为应用提供可靠的数据库连接管理,帮助减少数据库连接的开销,提高数据库操作的性能。


任务的目的

因为华为云采用了自己的cpu指令集和操作系统,所以可能有些软件不适配。所以诞生了此次任务。我领取的任务就是适配tomcatjdbc,在华为云上部署,看看适配能够正常运行。

报名流程

  1. 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
  2. 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
  3. 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
  4. 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
  5. 此时需要申领服务器,主要是Gaussdb,华为云ECS。
  6. 开发完整之后,在ECS上进行验证。
  7. 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成zip文件进行上传。

开发代码

  • 华为云提供了官方demo(https://gitcode.com/HuaweiCloudDeveloper/servicecomb-fence/overview),首先在自己的账号下导入仓库。
  • 现在这个项目是在Mybatis上改的,一些基础的类,例如student已经存在了。所以就不需要再写了
  • 我的项目https://gitcode.com/wsm921225/opensource-demo-tomcat-jdbc-241107/overview,分支dev_tomcat_jdbc

开发思路

因为tomcatjdbc没有像hikaricp那么流行,没有可用的starter,咱们直接引入tomcatjdbc的依赖,自己构造Datasource即可。
引入依赖:
<dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-jdbc</artifactId>
      <version>11.0.0</version>
    </dependency>
<dependency>
      <groupId>org.opengauss</groupId>
      <artifactId>opengauss-jdbc</artifactId>
    </dependency>

进行properties配置

spring:
  datasource:
    url: jdbc:opengauss://ip:port/postgres?currentSchema=class # WARNING: please change ip and port
    username: root
    password: pwd
    driver-class-name: org.opengauss.Driver
    tomcat:
      initial-size: 5
      max-active: 50
      max-idle: 30
      min-idle: 5
      max-wait: 10000
      test-on-borrow: true
      validation-query: SELECT 1

值得注意的是构造Datasource的方法, 需要指定类型

    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().type(org.apache.tomcat.jdbc.pool.DataSource.class).build();
    }

至此,项目启动完成测试。

上云第一步-购买Gaussdb

第二步-购买ECS

    成果访问

    访问 http://公网ip/ui/admin/  点击登录按钮后,页面显示如下

    自此,成功完成tomcatjdbc对接华为云的任务。

    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。