天道酬勤,学无止境

覆盖属性文件中数据库连接的超时(Overriding timeout for database connection in properties file)

问题

我想知道是否有一种特定的方法可以在我的 Java Web 项目的属性文件中覆盖数据库连接超时? 我正在使用 Hibernate、Spring 和 MySQL DB。 我尝试了几个不同的属性字段并将超时时间减少到 1 毫秒,但连接仍然完成,事务仍在正确处理。

这些是我用过的属性字段无济于事......

  • spring.jpa.properties.javax.persistence.query.timeout=1
  • spring.jdbc.template.query-timeout=1
  • hibernate.c3p0.timeout=1

是休眠覆盖了这个超时值还是我设置不当? 提前致谢!

回答1

假设您使用的是 Spring Boot,您可以尝试:

spring.transaction.defaultTimeout=1

此属性将事务的 defaultTimeout 设置为 1 秒。

(查看 TransactionDefinition 的源代码似乎无法使用比秒更精确的任何东西。)

另请参阅:TransactionProperties


javax.persistence.query.timeout

这是 Query 的提示。 如果您像这样使用它,它应该可以工作:

entityManager.createQuery("select e from SampleEntity e")
    .setHint(QueryHints.SPEC_HINT_TIMEOUT, 1)
    .getResultList();

另请参阅查询提示


spring.jdbc.template.query-timeout

请记住,根据JdbcTemplate#setQueryTimeout javadoc:

在事务级别指定超时的事务中执行时,此处指定的任何超时都将被剩余的事务超时覆盖。


hibernate.c3p0.timeout

我怀疑这个属性指定了从连接池获取超时,而不是查询执行

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 设置JDBC连接的网络超时(Setting Network Timeout for JDBC connection)
    问题 我正在尝试使用Java设置网络超时我的Oracle数据库连接。 但是,我遇到了一个错误。 下面是示例代码,它们是各自的例外。 try{ conn = new Database("oracle").connect(); conn.setNetworkTimeout(null, 30000); //I don't have an Executor, so the field is set to null System.out.println(Switch.date() + " -> Database Connection Initialized"); } catch(SQLException ex){ Logger.getLogger(Switch.class.getName()).log(Level.SEVERE, null, ex); } 我得到的异常是: Exception in thread "main" java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.setNetworkTimeout(Ljava/util/concurrent/Executor;I)V at ke.co.smart.Switch.<init>(Switch.java:524) at ke.co.smart.Switch
  • 哪个 ansible.cfg 超时值是“-T”覆盖 ansible-playbook 命令?(Which ansible.cfg timeout value is "-T" overriding on the ansible-playbook command?)
    问题 ansible-playbook 文档说 -T 将“以秒为单位覆盖连接超时(默认值 = 10)”。 在/etc/ansible/ansible.cfg文件的[persistent_connection]部分下,有connect_timeout (default 30 sec)和command_timeout (default 10 sec) 。 ansible-playbook 文档会建议它是connect_timeout被覆盖,但页面指定的默认值与connect_timeout默认值不匹配,它与command_timeout默认值匹配。 那么, ansible-playbook 命令上的 -T 标志是否会覆盖connect_timeout 、 command_timeout或与其中任何一个无关的其他超时? 回答1 -T相当于DEFAULT_TIMEOUT配置设置。 DEFAULT_TIMEOUT: default: 10 description: This is the default timeout for connection plugins to use. env: - {name: ANSIBLE_TIMEOUT} ini: - {key: timeout, section: defaults} name: Connection timeout type
  • 覆盖/修改 Rails 类 (ActiveResource)(Overriding/Modifying Rails Class (ActiveResource))
    问题 我一直在努力解决 ActiveResource 的一个问题:当主机名解析 ActiveResource 请求,但另一端没有服务器返回信息时,ActiveResource 的超时值不起作用。 请求只是挂起。 在查看 ActiveResource 代码后,我意识到这是因为底层 Net:Http 对象只有一个超时值集:read_timeout。 Net:Http 库将其定义为“等待读取一个块(通过一次 read(2) 调用)的秒数”。 Net:Http 库还定义了另一个超时值 open_timeout,它被定义为“等待打开连接的秒数”。 我不确定为什么默认情况下没有设置 open_timeout 并在 ActiveResource 类上设置超时值,但是在修改 ActiveResource::Connection 类以在 http 对象上包含 open_timeout 之后,我的问题就解决了! 我是 Rails 的新手,所以我不确定在我的项目中实际进行这种修改的最佳方法; 我不想只更改我的 gem 目录中的代码。 在 rails 项目中是否有正确的方法进行这些修改? 我已经看到可以从 /vendor 文件夹加载 rails 类,但是它们是否都必须在那里才能工作? 我开始创建 ActiveResource::Base 和 ActiveResource::Connection 类的子类
  • 更改SqlConnection超时(Changing SqlConnection timeout)
    问题 我试图覆盖15秒的默认SqlConnection超时,并收到一条错误消息,指出 无法分配属性或索引器,因为它是只读的。 有没有解决的办法? using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection)) { connection.Open(); using (SqlCommand command = connection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; connection.ConnectionTimeout = 180; // This is not working command.CommandText = "sproc_StoreData"; command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID); command.Parameters.AddWithValue("@AsOfDate", order.IncurDate); command.ExecuteNonQuery(); } } 回答1 如果要为特定查询提供超时,则CommandTimeout是前进的方向。
  • SpringBoot-技术专区-application配置文件详解
    1.配置文件类型    SpringBoot的配置文件application有两种文件格式,两种配置的内容是一致的,只是格式不一致。  1.application.properties  2.application.yml或者application.yaml  一:application的配置非常灵活,所有application配置内容涉及到方方面面,在了解application的具体内容之前,先看下application存放位置以及位置不同和格式不同导致的优先级问题。2.配置文件优先级(请注意此处)  application.properties和application.yml文件可以放在一下四个位置:外置,在相对于应用程序运行目录的/config子目录里。外置,在应用程序运行的目录里内置,在config包内内置,在Classpath根目录  同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性。 此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application
  • SpringBoot-技术专区-application配置文件详解
    1.配置文件类型    SpringBoot的配置文件application有两种文件格式,两种配置的内容是一致的,只是格式不一致。  1.application.properties  2.application.yml或者application.yaml  一:application的配置非常灵活,所有application配置内容涉及到方方面面,在了解application的具体内容之前,先看下application存放位置以及位置不同和格式不同导致的优先级问题。2.配置文件优先级(请注意此处)  application.properties和application.yml文件可以放在一下四个位置:外置,在相对于应用程序运行目录的/config子目录里。外置,在应用程序运行的目录里内置,在config包内内置,在Classpath根目录  同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性。 此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application
  • Java面试题 -- SpringBoot面试题二(Spring Boot 是微服务中最好的 Java 框架)
    问题一 path=”users”, collectionResourceRel=”users” 如何与 Spring Data Rest 一起使用? @RepositoryRestResource(collectionResourceRel = "users", path = "users") public interface UserRestRepository extends PagingAndSortingRepository<User, Long> path- 这个资源要导出的路径段。 collectionResourceRel- 生成指向集合资源的链接时使用的 rel 值。在生成 HATEOAS 链接时使用 问题二 当 Spring Boot 应用程序作为 Java 应用程序运行时,后台会发生什么? 如果你使用 Eclipse IDE,Eclipse maven 插件确保依赖项或者类文件的改变一经添加,就会被编译并在目标文件中准备好!在这之后,就和其它的 Java 应用程序一样了。 (1)当你启动 java 应用程序的时候,spring boot 自动配置文件就会魔法般的启用了。 (2)当Spring Boot 应用程序检测到你正在开发一个 web 应用程序的时候,它就会启动 tomcat。 问题三 我们能否在 spring-boot-starter-web 中用
  • springboot中的配置大全,看这一篇足够了
    springboot号称不用xml,所有都可以写配置,因而大受欢迎,这里我整理了一下springboot中的一些配置,应该说比较齐全了吧 先上一个application.properties转 application.yml的网站,传送地址 banner: charset: UTF-8#横幅文件编码。 image: height: #字符中横幅图像的高度(默认为图像高度) invert: #如果黑暗终端主题的图像应该被反转(默认为false) location: classpath:banner.gif#横幅图像文件位置(也可以使用jpg / png)。 margin: #左侧图像边距(默认为2) width: #以字符形式显示横幅图像的宽度(默认值为76) location: classpath:banner.txt#横幅文件位置。 endpoints: actuator: enabled: true#启用端点。 path: #端点URL路径。 sensitive: false#在端点上启用安全性。 auditevents: enabled: #启用端点。 path: #端点路径。 sensitive: false#在端点上启用安全性。 autoconfig: enabled: #启用端点。 id: #端点标识符。 path: #端点路径。 sensitive:
  • Spring配置笔记
    ##Spring 的简述 1. XML配置 在Spring1.x版本,使用Spring开发全部都是XML配置的Bean,随着项目的扩大,我们经常需要XML文件分别放在不同的配置文件中,需要频繁的将类和配置文件进行切换修改. 2. 注解配置 在Sprng 2.x 版本, JDK1.5之后出现更新,注解!Spring提供了通过注解(@component@Service…)声明Bean.大大减少配置量.最终选择是应用配置(如数据库配置)用XML文件,业务配置用注解配置 3. java配置 从Spring 3.x 版本到现在,Spring提供了Java配置的能力,使用Java配置可以让你更理解配置Bean,从Spring 4.x 到Spring Boot都推荐使用Java配置 Spring 提供了IOC容器,AOP,数据访问,Web开发,消息,测试等 每一个被Spring管理的java对象都称为Bean.Spring提供的IOC容器主要用来初始化对象.解决对象之间的管理和对象的使用! ##Spring模块 1. 核心容器(Core Container) spring-core : 核心工具类,Spring其他模块大量使用Spring-core spring-beans : Spring定义Bean 的支持 spring-context : 运行Spring容器使用 spring
  • 如何为DbContext设置CommandTimeout?(How to set CommandTimeout for DbContext?)
    问题 我正在寻找一种为DbContext设置CommandTimeout的方法。 搜索之后,我找到了将DbContext转换为ObjectContext并为objectContext的CommandTimeout属性设置值的方法。 var objectContext = (this.DbContext as IObjectContextAdapter).ObjectContext; 但是我必须使用DbContext。 回答1 它将与您的方法一起使用。 或子类化(来自msdn论坛) public class YourContext : DbContext { public YourContext() : base("YourConnectionString") { // Get the ObjectContext related to this DbContext var objectContext = (this as IObjectContextAdapter).ObjectContext; // Sets the command timeout for all the commands objectContext.CommandTimeout = 120; } } 回答2 var ctx = new DbContext(); ctx.Database
  • 在实体框架中设置数据库超时(Set database timeout in Entity Framework)
    问题 我的命令一直处于超时状态,因此我需要更改默认的命令超时值。 我已经找到myDb.Database.Connection.ConnectionTimeout ,但是它是readonly 。 如何在Entity Framework 5中设置命令超时? 回答1 在您的环境中尝试以下操作: public class MyDatabase : DbContext { public MyDatabase () : base(ContextHelper.CreateConnection("Connection string"), true) { ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180; // seconds } } 如果要在连接字符串中定义超时,请像下面的连接字符串中一样使用Connection Timeout参数: <connectionStrings> <add name="AdventureWorksEntities" connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl; provider=System.Data.SqlClient;provider
  • HikariCP:为 Oracle 11g 设置 maxLifetime 应考虑哪些数据库级超时(HikariCP: What database level timeouts should be considered to set maxLifetime for Oracle 11g)
    问题 在 HikariCP 的文档中,提到 我们强烈建议设置此值,它应该至少比任何数据库级连接超时少 30 秒。 Oracle11.2 数据库应该考虑哪些数据库级连接超时? 我怎么能找到这些超时(要执行的查询)? 回答1 简短回答:无(默认)。 为了记录(在链接更改时在此处包含详细信息),我们正在讨论maxLifetime的属性 maxLifetime: 此属性控制池中连接的最长生命周期。 使用中的连接永远不会退役,只有当它关闭时才会被移除。 我们强烈建议设置此值,它应该至少比任何数据库或基础设施强加的连接时间限制少 30 秒。 值 0 表示没有最大生命周期(无限生命周期),当然受 idleTimeout 设置的约束。 默认值:1800000(30 分钟) 根据我的经验,HikariCP 这样做是一件好事。 据我所知,默认情况下,Oracle 不强制连接的最大生命周期(既不在 JDBC 驱动程序端 (1),也不在服务器端 (2))。 所以在这方面,“基础设施强加的连接时间限制”是+无穷大——这对我们来说是一个问题,因为我们确实观察到了长期连接的问题。 这也意味着任何值都是“至少少 30 秒”,包括默认值:) 我想连接层对此没有做任何事情,因为它依靠上面的池层来处理这些事情。 使用(现已弃用)隐式连接池是不可能的,我不知道 UCP(替代品)是否这样做,但如果您使用 HikariCP
  • springboot配置文件的所有属性
    http://blog.csdn.net/lpfsuperman/article/details/78287265 spring boot application.properties配置的各个属性详解 该示例文件作为标准提供。(官方文档 翻译过来的) 还是花了些功夫翻译,各位如果转发,请留下本文地址,谢谢微笑 翻译过程中难免出现翻译错误的地方,如果有哪位大神发现有错误的地方,请您留言指正,感激不尽大笑,共同进步。 created by lpf in 2017/10/19 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ---------------------------------------- 核心属性 ---------------------------------------- 文件编码 banner.charset= UTF-8 文件位置 banner.location= classpath:banner.txt 日志配置 日志配置文件的位置。 例如对于Logback的classpath:logback.xml logging.config= %wEx
  • 最全的springboot之application.properties配置文件详解
    为方便自己使用,在全网找的最全的application.properties配置文件详解,需要的时候可以来这里找一下 目录 1.网友的配置 2.王军伟老师的总结 1.网友的配置 转载自https://blog.csdn.net/xingbaozhen1210/article/details/84063997?tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1 # REDIS (Redis 配置) # 连接工厂使用的数据库索引 spring.redis.database= 0 # Redis服务器主机 spring.redis.host= # redis服务器端口 spring.redis.port= 6379 # 登录redis服务器的密码 spring.redis.password= # 给定时间池可以分配的最大连接数 使用负值为无限制 spring.redis.pool.max-active= 8 # 连接分配在池耗尽之前在抛出异常之前应阻止的最大时间量(连接池最大阻塞等待时间以毫秒为单位) 使用负值无限期地阻止 spring.redis.pool.max-wait= -1 # 连接池中的最大空闲连接 使用负值来表示无限数量的空闲连接
  • SMO ConnectionContext.StatementTimeout 设置被忽略(SMO ConnectionContext.StatementTimeout setting is ignored)
    问题 我成功地使用带有 SMO 的 Powershell 来备份大多数数据库。 但是,我有几个大型数据库,其中收到“超时”错误“System.Data.SqlClient.SqlException:超时已过期”。 超时始终发生在 10 分钟。 我尝试将 ConnectionContext.StatementTimeout 设置为 0、6000 和 [System.Int32]::MaxValue。 设置没有区别。 我发现了一些谷歌参考,表明将其设置为 0 使其不受限制。 无论我尝试什么,超时始终发生在 10 分钟。 我什至将服务器上的远程查询超时设置为 0(通过 Studio Manager),但无济于事。 下面是我设置超时和实际备份功能的 SMO 连接。 下面是我的脚本的输出。 更新有趣的是,我使用 VS 2008 在 C# 中编写了备份函数,超时覆盖在该环境中确实有效。 我正在将该 C# 进程合并到我的 Powershell 脚本中,直到我能找出超时覆盖不能仅用于 Powershell 的原因。 这非常烦人! function New-SMOconnection { Param ($server, $ApplicationName= "PowerShell SMO", [int]$StatementTimeout = 0 ) # Write-Debug "Function
  • Springboot application可以配置的选项(中文版)
    以下是Springboot的全部配置项,需要配置哪些们可以根据自己需求来定 #================================================= ================= #普通弹簧启动特性 ## 本示例文件仅供参考。请勿将其 全部 复制到您自己的应用程序中。^^^ #============================================== ===================== #---------------------------------------- #核心属性 #----- ----------------------------------- #BANNER banner.charset = UTF-8 #横幅文件编码。 banner.location = classpath:banner.txt #横幅文件的位置。 banner.image.location = classpath:banner.gif #横幅图片文件的位置(也可以使用jpg / png)。 banner.image.width = #横幅图像的宽度(以字符为单位)(默认为76) banner.image.height = #横幅图像的高度(以字符为单位)(默认基于图像高度) banner.image.margin =
  • 作业4:网页前端基础(HTTP请求方式与过程、HTTP状态码、HTTP头部信息)及静态网页爬取(urllib3库、requests库、Xpath解析网页、Beautiful Soup解析网页)
    网页前端基础及静态网页爬取 目录 网页前端基础及静态网页爬取 一、网页前端基础 1、HTTP请求方式与过程 2、常见HTTP状态码 3、HTTP头部信息 二、静态网页爬取 1、使用urllib3库实现 2、使用requests库实现 3、使用Xpath解析网页 4、使用Beautiful Soup解析网页 三、作业 一、网页前端基础 1、HTTP请求方式与过程 (1)请求方法 在HTTP/1.1协议中共定义了8种方法(也叫“动作”)来以不同方式操作指定的资源,常用的方法有GET、HEAD、POST等。 请求方法方法描述GET请求指定的页面信息,并返回实体主体。GET可能会被网络爬虫等随意访问,因此GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。HEAD与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回具体的内容,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中该资源的相关信息(元信息或称元数据)POST向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据会被包含在请求中,这个请求可能会创建新的资源或者修改现有资源,或二者皆有。PUT从客户端上传指定资源的最新内容,即更新服务器端的指定资源 (2)请求(request)与响应(response) HTTP协议采用了请求
  • 实体框架-当前命令超时值是多少(Entity Framework - what is the current command timeout value)
    问题 我正在使用Entity Framework 5,并且希望知道命令超时值。 为此,我将dbContext对象转换为ObjectContext并访问CommandTimeout属性。 int ? currentCommandTimeout = ((IObjectContextAdapter)dbContext).ObjectContext.CommandTimeout; 该属性的当前值为null,这意味着当前命令超时是基础提供程序的默认值。 谁是基础提供者? 在这种情况下,如何(通过EF代码)读取当前命令超时值? MSDN ObjectContext CommandTimeout属性参考 编辑:感谢您解释如何设置命令超时并在文档中查找默认命令超时值。 但是,这个问题仍然存在。 在默认情况下,如何通过EF读取命令超时值。 回答1 从MSDN, CommandTimeout属性获取或设置所有对象上下文操作的超时值(以秒为单位)。 null值表示将使用基础提供程序的默认值。 因此,如果您不是通过代码显式设置它,也不是在连接字符串中传递它(在MySQL中),则它是提供程序的默认值。 如果要查看CommandTimeout的非null值,则需要在connectionString中传递它或通过代码进行设置。 谁是基础提供者?
  • Springboot2.4.4 application.yml YAML 模板 笔记
    相关笔记: springboot2.4.4 application.properties 模板 笔记 文章目录 YAML 基本要点基础模板 application.yml连接数据库的模板spring.datasource 基本 默认方式连接数据库默认连接池 Hikari 模板阿里 Druiddruid-mysql8.0.22 YAML 基本要点 键 冒号空格 值层级用左边空格区分, 不能用 Tab 制表符字符串值可以不加单双引号, 如果有空格就要加 基础模板 application.yml spring.application.name: ApplicationName server: # Network address to which the server should bind. # 网络地址绑定 默认无 address: # 服务器的HTTP端口,默认为8080 port: 80 # Value to use for the Server response header (if empty, no header is sent). # 可以在response的头加东西, 默认没有 server-header: servlet: # ContentPath 可以没/ context-path: / # tomcat相关 tomcat: # Character encoding
  • Spring RestTemplate超时(Spring RestTemplate timeout)
    问题 我想为我的Web应用程序使用的rest服务设置连接超时。 我正在使用Spring的RestTemplate与我的服务交谈。 我进行了一些研究,发现并使用了下面的xml(在我的应用程序xml中),我认为这是为了设置超时。 我正在使用Spring 3.0。 我在这里也看到了相同的问题,使用RestTemplate为Spring Web服务设置超时,但是解决方案似乎不太干净,我更愿意通过Spring config设置超时值。 <bean id="RestOperations" class="org.springframework.web.client.RestTemplate"> <constructor-arg> <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <property name="readTimeout" value="${restURL.connectionTimeout}" /> </bean> </constructor-arg> </bean> 似乎无论我将readTimeout设置为什么,我都会得到以下信息: 网络电缆已断开连接:等待约20秒,并报告以下异常: org.springframework.web.client