Spring + Hibernate: abrindo conexões demais

Estou tomando o seguinte erro:

org.postgresql.util.PSQLException: FATAL: connection limit exceeded for non-superusers

Minha aplicação usa spring e hibernate e meu usuário do banco não pode ser um superuser (limitação do servidor, que é compartilhado).
Isso aconteceu enquanto eu testava o sistema e havia outras 2 pessoas testando ele junto.

Alguma idéia do que pode estar causando isso e como solucionar?

tens que dar permissão no usuario para poder abrir mais conexões na base de dados em simultaneo, se fosse no mysql ou oracle eu podia ser mais especifico …

Mas essa não é uma solução muito legal… senão o dia em que eu tiver 1 milhão de usuários vou ter q permitir que sejam criadas 1 milhão de conexões :shock:

Eu tenho palpites:
1 - O spring não deve estar fechando as conexões como deveria.
2 - Se a aplicação tenta abrir uma conexão e não consegue, ela deveria esperar um tempo e tentar de novo até conseguir.

Pode estar acontecendo 1 dos problemas ou até mesmo os 2 simultâneamente.

Eu usei spring esperando n ter dor de cabeça com essas coisas e me ferrei pelo visto.

tens razao talvez esta nao seja a solucao ideal, mas existe dois tipos de solucoes possiveis como programador e como DBA, eu dei a como DBA

up!

Estou precisando muito de ajuda, esse problema é a única coisa que me impede de colocar o sistema em produção :cry:
Já tentei de tudo e nada funciona, já to ficando desesperado hahaha

rodpuc, estou passando pelo mesmo problema, por algum acaso vc teve alguma luz de como resolver??

Mais ou menos.

Além de configurar o BD no persistence.xml, eu também criei um dataSource no applicationContext.xml com as mesmas configurações. Eu não sei porque, mas funcionou. Se eu tiro as configs de um dos arquivos o problema volta.

A má notícia é que eu queria configurar o c3p0 para gerenciar um pool de conexões e não consegui fazer isso do jeito que as coisas estão, mas pelo menos ele parou de largar conexões abertas.

Acho que vc pode tentar fazer o mesmo, mas o ideal seria que alguém aí ajudasse a gente a encontrar uma solução realmente definitiva.

Beleza, vou tentar isso na segunda feira e dou um retorno… até lá se alguém puder, como ele disse, nos ajudar a encontrar uma solução mais definida, por favor, nos ajude…

ih, não achei esse persistence.xml
aqui eu uso no context.xml

o DataSource como:

<bean id="atacadoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" >
	<property name="jndiName" value="java:comp/env/jdbc/MichelinDistribuicaoDS" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	<property name="sessionFactory" ref="atacadoSessionFactory" />
</bean> 	
...
<property name="hibernateProperties">
	<props>
		<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
		<prop key="hibernate.show_sql">true</prop>
		<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
		<prop key="hibernate.cache.use_query_cache">true</prop>
		<prop key="hibernate.use_second_level_cache">true</prop>
		<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>
				
		<prop key="hibernate.transaction.flush_before_completion">true</prop>
		<prop key="hibernate.transaction.auto_close_session">true</prop>
		<prop key="hibernate.connection.release_mode">after_transaction</prop>
	</props>
</property>

e dentro do postegres-ds.xml como:

<jndi-name>jdbc/ExemploDS</jndi-name>
<connection-url>jdbc:postgresql://exemplolocalhost:5432/banco</connection-url>
<driver-class>javax.sql.DataSource</driver-class>
<user-name>usuario</user-name>
<password>senha</password>
<min-pool-size>0</min-pool-size>
<max-pool-size>100</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>

Porém qnd carrego um link em específico ele sempre mostra
Caused by: org.postgresql.util.PSQLException: FATAL: connection limit exceeded for non-superusers

Mas ainda consigo fazer a consulta, se for pra outro lugar e depois tentar consultar novamente, ele acusa:
“Cannot get a connection, pool error Timeout waiting for idle object”
“Timeout waiting for idle object”

rodpuc, vc conhece essa forma q eu fiz??
alguém tem alguma sugestão de como posso resolver meu problema??