Attualmente sto migliorando un'applicazione che utilizza molla e ibernazione. Esistono più istanze in cui l'applicazione comunica con il db (postgres) tramite istruzioni preparate. L'applicazione fino ad ora, comunicata con postgres via dbcp.Disabilitazione delle istruzioni preparate in dbcp + spring + hibernate + jdbc?
Modifica: L'applicazione ora comunicata a postgres tramite pgbouncer.
cioè .: applicazione -> DBCP -> -> pgbouncer postgres
ho capito che questo non sarebbe la soluzione più ideale cioè: avere 2 poolers. Ma a causa dell'attuale architettura richiediamo entrambi.
Requisito: pgbouncer non supporta istruzioni preparate in transazione modalità & devono quindi essere eliminati.
Modifiche per eliminare la dichiarazione preparata.
1) psql: VERSION = 9.2.6
nessun cambiamento
2) pgbouncer: Nel impostato il file di configurazione seguenti attribures
ignore_startup_parameters=extra_float_digits
pool_mode=transaction
server_reset_query=
3) jdbc: Il preparato la soglia è stata impostata di conseguenza. cioè: jdbc:postgresql://localhost:6541/postgres?prepareThreshold=0
JAVA VERSION = 1.7.0_51
JDBC DRIVER = postgresql-9.3-1102.jdbc41-3.jar
4) dbcp: poolPreparedStatements = falsi maxOpenPreparedStatements = 0
5) invernano: non cambia
6) molla: non cambia
Edizione:
Malgrado tutte queste modifiche, vedo ancora le dichiarazioni preparate che tentano di creare transazioni non riuscite a causa di ciò &.
"ERRORE: preparato dichiarazione 'S_21' non esiste; eccezione annidata è org.postgresql.util.PSQLException: ERRORE: preparato dichiarazione 'S_21' non esiste"
Ho rimosso tutte le modifiche logiche quello ha usato una dichiarazione preparata.
Come è possibile impedire la creazione delle altre istruzioni preparate? In primavera o in ibernazione vengono create internamente istruzioni preparate per il loro utilizzo? Se sì, come posso disabilitarli?
questo suona come una colossale cattiva idea. – chrylis
hai risolto questo problema? Puoi postare per favore, cosa hai fatto per risolvere questo problema? – awsome