首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jdbc connectTimeout与jdbc loginTimeout

jdbc connectTimeout与jdbc loginTimeout
EN

Stack Overflow用户
提问于 2014-10-08 06:00:52
回答 1查看 9.6K关注 0票数 3

我们的项目需要支持Postgres (Postgresql驱动程序)的“jdbc超时”功能。我们还支持Microsoft (JTDS驱动程序)和MySQl (mysql驱动程序)。因此,我想介绍“loginTimeout”作为所有数据库的一个共同特性。

在查看驱动程序的文档时,我发现JTDS和Postgresql驱动程序都支持一个名为“loginTimeout”的jdbc参数,但对于Msql则不支持。

http://jtds.sourceforge.net/faq.html

loginTimeout ( TCP/IP连接默认为-0,命名管道连接为20 )在超时之前等待成功连接的时间(以秒为单位)。如果使用TCP/IP连接连接到数据库,并且使用Java1.4或更高版本,则使用loginTimeout参数在最初打开新套接字时设置初始连接超时。值为零(默认值)将导致连接无限期等待,例如,直到建立连接或发生错误。另见socketTimeout。如果使用了命名管道连接(namedPipe为真)且loginTimeout大于零,则在试图连接到服务器时收到“所有管道实例都繁忙”错误消息时,重试期间的长度将使用loginTimeout值。如果loginTimeout为零(默认值),则命名管道重试周期将使用20秒的值。

http://jdbc.postgresql.org/documentation/84/connect.html

loginTimeout = int指定等待建立数据库连接的时间。超时以秒为单位指定。

但是对于Mysql来说,没有比loginTimeout更好的了,但是

套接字连接的connectTimeout:超时(毫秒),0没有超时。仅适用于JDK-1.4或更高版本。默认为“0”

所以我的问题是“connectTimeout和loginTimeout之间有什么区别”,他们做同样的功能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-31 14:49:33

MySQL的socketConnect设置确定客户端尝试打开网络连接的时间;它不声明数据库本身将进行身份验证或功能,只可以建立套接字。

相反,Postgres表示连接到数据库的最长时间;如果您的命令在超时之前返回,则数据库将收到网络请求并在适当的时间内作出响应。

因此,在一种情况下,您只对网络行为施加约束(即您在该端口上等待将套接字连接到该服务器的时间);在另一种情况下,您正在对数据库行为施加约束(即等待数据库本身连接的时间)。

另外,接口javax.sql.CommonDataSourcegetLoginTimeout指定了一个JDBC属性,该属性模仿PostgreSQL属性的行为。当您查看MysqlDataSource的各种实现(例如,马里亚布)时,这些方法没有实现;这通常使我相信在MySQL中没有直接的类似物。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26250141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档