Pessoal, alguém aqui usa ibatis e teve problema de ter várias conexões abertas ?
Como resolvo esse problema ?
p.s. Na config do pool eu coloquei pra ter no máximo 5 conexões abertas, mas o ibatis não está respeitando isso.
:?:
Pessoal, alguém aqui usa ibatis e teve problema de ter várias conexões abertas ?
Como resolvo esse problema ?
p.s. Na config do pool eu coloquei pra ter no máximo 5 conexões abertas, mas o ibatis não está respeitando isso.
:?:
Bem, inicialmente vamos às perguntas clássicas:
1 - Que versão do iBatis você está usando?
2 - Que mecanismo de pool você está usando?
3 - Você está configurando corretamente seu pool?
O iBatis utiliza 10 conexões ativas para o pool como valor padrão, usando o SimpleDataSource (se você não definir nenhum valor).
Você pode ver como exemplo a classe com.ibatis.common.jdbc.SimpleDataSource:
[code]
private static final String PROP_POOL_MAX_ACTIVE_CONN = “Pool.MaximumActiveConnections”;
…
…
poolMaximumActiveConnections =
props.containsKey(PROP_POOL_MAX_ACTIVE_CONN)
? Integer.parseInt((String) props.get(PROP_POOL_MAX_ACTIVE_CONN))
: 10;[/code]
Verifique se seu arquivo de configurações ou o sql-map-config.xml estão corretos:
Pool.MaximumActiveConnections=5
ou
<property name="Pool.MaximumActiveConnections" value="5"/>
Espero ter ajudado. Feliz ano novo.
[]'s
Daniel Augusto
1 - Que versão do iBatis você está usando?
Versão 2.1.5
2 - Que mecanismo de pool você está usando?
To usando o pool dele mesmo, tem outra forma de usar ?
3 - Você está configurando corretamente seu pool?
<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.20.29:1524:dbpi"/>
<property name="JDBC.Username" value="xxxx"/>
<property name="JDBC.Password" value="xxxx"/>
<property name="JDBC.DefaultAutoCommit" value="true" />
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select * from dual"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
No aguardo de qq ajuda !!!
Obrigado.
Eu não tenho certeza, mas se não me engano eu tive que usar a tag commitRequired=true, para resolver problemas deste tipo:
<transactionManager type="JDBC" commitRequired="true">
mutano.
Mas esse parâmetro não é só no caso de eu estar usando transação ?
Eu não uso transação nesse sistema, só faço selects.
Mas quantas conexões ficam abertas?
Chega a estourar o limite de conexões do banco, no caso 150
Talvez o DataSource type SIMPLE não esteja funcionando corretamente. Já tentou usar DBCP?
Não tentei não, você pode me passar um exemplo de como eu configuro ele ?
Tem na documentação do iBatis… dá uma olhada. Só não esquece de colocar o commons-dbcp no classpath da aplicação ou no servidor web.
Outra coisa que de repente pode ser o seu problema é a query de ping:
select * from dual
Existe esta tabela no seu database? Se não, talvez ela sempre retorne erro e o pool cria outra conexão… mas isso é um chute.
Então, não é problema do ping não pois o ping nem está ativado veja,
<property name="Pool.PingQuery" value="select * from dual"/>
<property name="Pool.PingEnabled" value="false"/>
Mas vou dar uma olhada na documentação quanto ao uso do DBCP
Pelo menos você já me deu uma luz ! :idea: