我使用的是Spring應用程序和我得到以下異常爲:PostgreSQL的連接限制非超級用戶
Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection.
當我手動嘗試使用DBVisualizer中連接到數據庫,我收到以下錯誤
An error occurred while establishing the connection:
Long Message:
FATAL: connection limit exceeded for non-superusers
Details:
Type: org.postgresql.util.PSQLException
Error Code: 0
SQL State: 53300
這裏是我的春天context.xml文件
<jee:jndi-lookup id="dataSource1" jndi-name="jdbc/PmdDS"/>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource1" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
</props>
</property>
</bean>
我的問題是我收到此錯誤,因爲我還沒有添加以下行春季-context.xml中
<prop key="hibernate.connection.release_mode">auto</prop>
將加入這一行能解決我的問題。我擔心我的應用程序正在創建連接,但沒有釋放數據庫連接,因爲我沒有在spring-context.xml中添加上述行.. 注意我沒有使用HibernateTemplate。我使用sessionFactory.getCurrentSession().createQuery("").list()
解僱我的查詢 我的context.xml詳情
<Context>
Specify a JDBC datasource
<Resource name="jdbc/PmdDS"
auth="Container"
type="javax.sql.DataSource"
username="sdfsfsf"
password="sfsdfsdf" maxActive="-1"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://111.11.11.11:5432/test"/>
</Context>
請提出解決方案
我在編輯中添加的是context.xml項一些儲備連接 – Rajesh 2012-02-29 11:34:49
嘗試設置maxActive = 「-1」的值小於100(postgres默認值)。通常10到20就足夠了。 – 2012-02-29 12:06:52