簡體   English   中英

如何使用Hibernate配置連接池?

[英]How to configure a connection pool with Hibernate?

如何使用Spring和Hibernate配置連接池? 我的程序作為服務器來偵聽來自客戶端的請求。 如果客戶端每小時發送一次請求,則我的程序正常運行。 但是如果客戶從上午00:00到上午07:00不發送請求,我的程序將捕獲異常。

例外是:

org.hibernate.TransactionException:回滾在org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:215)在CardCharging_MemCache.dao.FilterDao.getConnectorId(FilterDao.java:123)在CardCharging_MemCache.bussiness.CDVFilterRequestProcess .PCSL(CDVFilterRequestProcess.java:29),位於CardCharging_MemCache.myhttp.myHttphandle.handle(myHttphandle.java:113),位於com.sun.net.httpserver.Filter $ Chain.doFilter(未知源),位於sun.net.httpserver.AuthFilter com.sun.net.httpserver.Filter $ Chain.doFilter(未知源)在sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle處com.sun.net.httpserver(未知源) .Filter $ Chain.doFilter(未知來源)在sun.net.httpserver.ServerImpl $ Exchange.run(未知來源)在sun.net.httpserver.ServerImpl $ DefaultExecutor.execute(未知來源)在sun.net.httpserver.ServerImpl位於sun.net.httpserver.ServerImpl上的$ Dispatcher.handle(未知源)在以下位置的$ Dispatcher.handle(未知源) java.lang.Thread.run(未知源)由:org.hibernate.TransactionException:無法在org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:167)上的JDBC連接上回滾org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)...另外13個原因:java.sql.SQLException:oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java)處的關閉連接:3694),網址為org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)…還有14個。

關於連接的例外。 有人幫我 l 解凍!

如果連接空閑了一段時間(在mysql默認情況下為8個小時),則正常的數據庫連接將失效,為避免這種情況,您只需在連接池中設置以下屬性-“ validationQuery”,“ validationInterval”,“ testWhileIdle”,“ testOnBorrow”。 他們將在空閑時間建立您的連接,並始終從池中返回有效的連接。

在連接池中嘗試使用此屬性,它們應避免會話無效

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource" >
    <property name="driverClassName" value="${database.driverClassName}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>

    <property name="minIdle" value="${database.minIdle}"/>
    <property name="initialSize" value="${database.initialPoolSize}"/>
    <property name="maxActive" value="${database.maxPoolSize}"/>
    <property name="maxIdle" value="${database.maxIdle}"/>
    <property name="testOnBorrow" value="true"/>
    <property name="validationQuery" value="SELECT 1"/>

    <property name="timeBetweenEvictionRunsMillis" value="30000"/>
    <property name="maxWait" value="10000"/>
    <property name="minEvictableIdleTimeMillis" value="30000"/>
    <property name="logAbandoned" value="true"/>
    <property name="testWhileIdle" value="true"/>
    <property name="validationInterval" value="300000"/>
    <property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport(threshold=10000)"/>

</bean>

在此處閱讀有關屬性及其解釋的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM