Quand je commence ma demande je teste ma base de données interne est correcte comme suit:Comment tester la base de données Hibernate est correct, rapidement
HibernateUtil.beginTransaction();
Ceci est une base de données de H2. J'utilise Hibernate en haut avec le pooling c3p0.
Problème est-il prend une minute pour décider qu'il ne peut pas être une transaction, je voudrais réessayer dans les 10 secondes. J'ai regardé les propriétés c3p0 et je ne vois rien qui puisse le faire.
* Mise à jour * Commentaire m'a fait réaliser que HibernateUtil.beginTransaction() se cachait ce que je faisais alors remplacé par:
System.out.println("Get Session"+new Date());
Session session = com.jthink.songlayer.hibernate.HibernateUtil.getSession();
System.out.println("Get Txn"+new Date());
Transaction t = session.getTransaction();
System.out.println("Set Timeout"+new Date());
t.setTimeout(10);
System.out.println("Begin Txn"+new Date());
session.beginTransaction();
System.out.println("Commit"+new Date());
t.commit();
sortie est
Get SessionWed Nov 21 12:15:56 GMT 2012
Get TxnWed Nov 21 12:16:27 GMT 2012
Set TimeoutWed Nov 21 12:16:27 GMT 2012
Begin TxnWed Nov 21 12:16:27 GMT 2012
FailedWed Nov 21 12:16:46 GMT 2012
Il semble donc 30 secondes est passé à obtenir une session (pas clair comment il peut même obtenir une session que la base de données est corrompue) et puis 19 secondes en essayant de commencer la transaction
alors que lorsque la base de données est très bien, les horaires sont quelques secondes
Get SessionWed Nov 21 12:23:57 GMT 2012
Get TxnWed Nov 21 12:23:59 GMT 2012
Set TimeoutWed Nov 21 12:23:59 GMT 2012
Begin TxnWed Nov 21 12:23:59 GMT 2012
CommitWed Nov 21 12:23:59 GMT 2012
Le problème principal semble être qu'il faut de longue date à (sorte de) obtenir une session quand db corrompu
Est-ce que ce fil vous aide? http://stackoverflow.com/questions/635047/transaction-timeout-not-working-on-hibernate-with-oracle – lcguida
thx, aide mais ne résout pas le problème. –