首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果Mysql端口被阻塞,如何防止应用程序(使用hibernate + c3po)挂起?

如果Mysql端口被阻塞,如何防止应用程序(使用hibernate + c3po)挂起?
EN

Stack Overflow用户
提问于 2018-03-30 05:44:31
回答 1查看 253关注 0票数 0

我一直试图使我的Java应用程序db防故障,这样如果DB不可用,它们就不会出现意外的滞后。当数据库完全关闭时,我已经成功地处理了这个简单的案例。

当mysql的端口为我的机器被阻塞时,我被困在了一个情况下,我试图访问它。在这种情况下,应用程序将永远挂起,c3po文档中提到的超时配置似乎无法预测地处理这种情况。在调试时,我可以看到它挂在mysql连接器中的ReadAheadInputStream类上。这个类的文档显示,它只阻塞以满足读取请求。

到目前为止,我已经使用了以下属性。

代码语言:javascript
复制
 <property name="hibernate.c3p0.validate" value="true"/>
 <property name="hibernate.c3p0.checkoutTimeout" value="5"/>
 <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1"/>

除此之外,配置连接池的其他属性在文档中也有提到。

版本:

代码语言:javascript
复制
 <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>4.2.12.Final</version>
    </dependency>

有人能指点我一下吗?除了需要配置的c3po文档中提到的那些参数之外,还有其他超时参数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 05:54:35

您可能需要为MySQL设置网络超时,默认情况下没有。初始连接使用connectTimeout,后续网络操作使用socketTimeout。例如:

代码语言:javascript
复制
jdbc:mysql://dbhost:3306/dbname?connectTimeout=1000&socketTimeout=200000

两者都以毫秒为单位。见https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

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

https://stackoverflow.com/questions/49569039

复制
相关文章

相似问题

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