gpt4 book ai didi

java - 如何减少创建 c3p0 ComboPooledDataSource 和获取 Oracle 数据库连接的超时时间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:28 28 4
gpt4 key购买 nike

我有一个连接到 Oracle 数据库的非常简单的 Hibernate 项目。

如果由于某种原因它无法连接到 Oracle(例如网络中断),它会在一分钟内失败。这发生在构建数据源时,似乎也发生在尝试与数据库交互时。

我想更改设置使其在几秒钟内失败。更改我认为是相关设置后,似乎没有任何变化。 好像我的配置被忽略了。

执行依赖注入(inject)的 Spring 文件的相关部分,appContext.xml:

<bean id="oracleDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@****"/>
<property name="user" value="****"/>
<property name="password" value="****"/>
</bean>

<bean id="oracleSessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="oracleDataSource"/>
<property name="configLocation">
<value>classpath:oracle.hibernate.cfg.xml</value>
</property>
</bean>

还有我的hibernate配置文件:oracle.hibernate.cfg.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.c3p0.max_size">1</property>
<property name="hibernate.c3p0.checkoutTimeout">5000</property>
<property name="hibernate.c3p0.acquireRetryAttempts">0</property>
<property name="show_sql">true</property>
<mapping class="****"/>
</session-factory>
</hibernate-configuration>

我听说这可能是由于类路径中没有 hibernate-c3p0-version.jar 引起的,所以这是我测试的类路径设置...

Classpath settings for my test

...这是在我的 Maven pom.xml 中指定 hibernate-c3p0-4.2.11.Final.jar 的地方:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.2.11.Final</version>
</dependency>

最佳答案

您正在配置中使用注入(inject)的DataSource。尝试向 hibernate 添加配置不会有帮助,因为 hibernate 无法控制数据源。在 Spring 配置的 ComboPooledDataSource 上设置属性。

<bean id="oracleDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@****"/>
<property name="user" value="****"/>
<property name="password" value="****"/>
<property name="acquireRetryAttempts" value="0"/>
<property name="checkoutTimeout" value="5000"/>
</bean>

从您的 hibernate 配置中删除 hibernate.c3p0 属性以及添加的依赖项,因为它不会被使用。

关于java - 如何减少创建 c3p0 ComboPooledDataSource 和获取 Oracle 数据库连接的超时时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25569565/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com