春天 +休眠+ c3p0 +如果连接数据库失败,MySql 不会超时

发布于 2024-12-14 23:39:37 字数 1167 浏览 1 评论 0原文

我使用 Spring、Hibernate 和 Mysql 与 c3p0 的组合进行连接池。我的问题是,当数据库连接参数错误时,应用程序需要 15-20 分钟才能部署。 (当我给数据库提供了错误的网址时,我遇到了这个问题)。而且,当我检查我的tomcat日志时,我看不到任何异常。

我正在使用的配置:

<context:property-placeholder location="/WEB-INF/spring.properties" />
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
             p:dataSource-ref="dataSource"
             p:configLocation="${hibernate.config}"
             p:packagesToScan="com.cronos"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close"
            p:driverClass="${app.jdbc.driverClassName}"
            p:jdbcUrl="${app.jdbc.url}"
            p:user="${app.jdbc.username}"
            p:password="${app.jdbc.password}"
            p:acquireIncrement="5"
            p:acquireRetryAttempts="3"
            p:idleConnectionTestPeriod="60"
            p:maxPoolSize="100"
            p:maxStatements="50"
            p:minPoolSize="10"/>

我需要帮助进行配置,以便应用程序在给定时间段后如果无法连接到数据库并在日志中抛出一些异常,就会超时。

I am using a combination of Spring, Hibernate and Mysql with c3p0 for connection pooling. My problem is that, the application takes 15-20 minutes to deploy when the database connection parameters are wrong. (i faced this when I had given a wrong url for the database). Moreover, when I check my tomcat logs, I cannot see any exceptions.

The configurations I am using :

<context:property-placeholder location="/WEB-INF/spring.properties" />
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
             p:dataSource-ref="dataSource"
             p:configLocation="${hibernate.config}"
             p:packagesToScan="com.cronos"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close"
            p:driverClass="${app.jdbc.driverClassName}"
            p:jdbcUrl="${app.jdbc.url}"
            p:user="${app.jdbc.username}"
            p:password="${app.jdbc.password}"
            p:acquireIncrement="5"
            p:acquireRetryAttempts="3"
            p:idleConnectionTestPeriod="60"
            p:maxPoolSize="100"
            p:maxStatements="50"
            p:minPoolSize="10"/>

I need helping with the configuration, such that the application will timeout after a given period if it cannot connect to a database and throw some exception in the log.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橪书 2024-12-21 23:39:37

您可以将数据库连接“存储”在 tomcat 上下文中,并使其可通过 JNDI 使用。因此,当需要更改配置时,只需重新启动服务器即可,而不必重新部署应用程序。

@see Tomcat 操作方法

You can "store" the database connection in the tomcat context and make it avaiable via JNDI. So when need to change the configuration then you only need to restart the server, but must not redeploy the application.

@see Tomcats How To

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文