首页 > 数据库 >jfinal框架下,连接国产达梦数据库,抛出SocketTimeoutException异常

jfinal框架下,连接国产达梦数据库,抛出SocketTimeoutException异常

时间:2023-10-20 09:23:15浏览次数:37  
标签:SocketTimeoutException 数据库 DruidPlugin 连接池 jfinal 达梦

公司为政府开发项目,主框架选择springboot,orm框架使用jfinal。数据库为国产达梦数据库

写统计类服务时,通常sql运行时间会比较久,超过10s的sql一定会报SocketTimeoutException异常

 

尝试使用原生jdbc创建连接,运行sql毫无问题。

遂检查连接池设置。

jfinal使用druid连接池

网上搜索关键字可得是socketTimeOut参数设置的有问题,但是给出的解决方案是在jdbcurl上添加socketTimeOut参数,照做之后发现没有用。

无奈之下只好去看druid连接池的源码。

 jfnail采用的是DruidPlugin的方式,并不直接生成DataSource,我们只能在DruidPlugin.start方法中看到DataSource的初始化

进入DruidDataSource,找到init方法,重要找到了“罪魁祸首”

 DruidDataSource在socketTimeout未定义的情况下,会将其设置为10s,(原生jdbc是0,即不超时)

那么办法就简单了

 DruidPlugin start之后,拿到DataSource对象,设置超时时间即可。

 至此圆满解决。

还记得我之前说的在jdbcurl中设置参数为什么没用吗?

注意到initFromUrlOrProperties这个方法,

 在url中设置参数的方法,仅适用于mysql,达梦数据库是不支持的

包括DruidPlugin对象的setConnectionProperties方法,在连接dm数据库的时候也是不生效的

标签:SocketTimeoutException,数据库,DruidPlugin,连接池,jfinal,达梦
From: https://www.cnblogs.com/petrichor-m/p/17775251.html

相关文章

  • MyBatis Plus 达梦数据库 分页查询异常问题
    MyBatisPlus达梦数据库分页查询异常问题 一、问题背景根据博客《SpringBootMyBatisPlus整合达梦数据库》中提到分页查询问题,如果没有配置 MybatisPlusConfig.java文件,会出现如下现象:数据表PRODUCTION.PRODUCT_CATEGORY中的数据如下: 调用如下查询接口:http:/......
  • 将达梦数据库的JDBC驱动包 DmJdbcDriver18.jar 安装到本地 Maven 仓库
    将达梦数据库的JDBC驱动包DmJdbcDriver18.jar安装到本地Maven仓库 一、问题背景在博客《SpringBootMyBatisPlus整合达梦数据库》中写道,从 https://eco.dameng.com/download/ 中下载达梦JDBC驱动包,如下: JDK1.8 对应的JDBC驱动包为:DmJdbcDriver18.jar ......
  • 达梦数据库 -2723: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
    达梦数据库-2723:仅当指定列列表,且SETIDENTITY_INSERT为ON时,才能对自增列赋值 一、问题背景达梦数据库-2723:仅当指定列列表,且SETIDENTITY_INSERT为ON时,才能对自增列赋值  二、问题原因  三、解决方案        ......
  • SpringBoot 操作 达梦数据库
    SpringBoot操作达梦数据库 一、前提条件本篇博客以访问本地达梦数据库(DM8)为基础进行演示。(前提:本地已经安装了DM8数据库!)关于Windows安装达梦数据库,请参考博客:Windows安装达梦数据库关于Docker安装达梦数据库,请参考博客:Docker安装达梦数据库关于JDBC方式操作......
  • Spring 操作 达梦数据库
    Spring操作达梦数据库 一、前提条件本篇博客以访问本地达梦数据库(DM8)为基础进行演示。(前提:本地已经安装了DM8数据库!)关于Windows安装达梦数据库,请参考博客:Windows安装达梦数据库关于Docker安装达梦数据库,请参考博客:Docker安装达梦数据库关于JDBC方式操作达梦......
  • MyBatis Plus 操作 达梦数据库
    MyBatisPlus操作达梦数据库  一、准备MyBatisPlus相关依赖包MyBatisPlus依赖包下载地址:JAVA_Mybatis_Plus_lib.zip下载加压后,效果如下: ......
  • 达梦空间数据学习(四)
    获取Y坐标ST_Y(geometry) 和X坐标ST_X(geometry) selectdmgeo2.ST_X(geom),dmgeo2.ST_Y(geom),to_char(dmgeo2.ST_AsText(geom))fromdmpoint;ST_Equals(geometry)——判断两个几何对象是否相同SELECTdmgeo2.ST_Equals(dmgeo2.ST_GeomFromText('POINT(11)',4326),dmg......
  • 达梦空间数据学习(三)
    几何对象存取函数ST_GeometryType(geometry)——返回几何图形的类型ST_CoordDim(geometry)——返回几何图形的维数ST_SRID(geometry)——返回几何图形的空间参考标识码ST_AsText(geometry)——获取几何体对象的wkt格式文本描述信息下面表包含不同几何图形类型的混......
  • 达梦空间数据学习(二)
    示例演示--点(POINT)droptableifexistsdmpoint;createtabledmpoint(namevarchar(100),geomST_Point);insertintodmpointVALUES('p1',dmgeo2.ST_PointFromText('point(11)',4326));insertintodmpointVALUES('p2',dmgeo2.ST_Po......
  • Oracle和达梦:连接多行查询结果
    Oracle和达梦:LISTAGG连接查询结果LISTAGG介绍使用LISTAGG函数,您可以将多行数据连接成一个字符串,并指定分隔符进行分隔。这在需要将多行数据合并为单个字符串的情况下非常有用,例如将多个值合并为逗号分隔的列表。函数介绍LISTAGG(column,delimiter)WITHINGROUP(ORDER......