Bug #391
ferméReport pour synchronisation - form - Gestion explicite des transactions incompatible avec un gestionnaire ou un conteneur transactionnel
100%
Description
Classe GenericRecordSetManager dans com.silverpeas.form.record :
- Modification de la méthode getConnection() par l'utilisation de la méthode utilitaire
DBUtil.makeConnection(String) en lieu et place d'un getConnection sur une DataSource et surtout PLUS
d'UTILISATION de setAutoCommit(false), qui provoque une exception systématique si l'on s'inscrit dans
un contexte transactionnel appelant (soit on a déjà une transaction, soit on n'en a aucune et dans
tous les cas le setAutocommit n'apporte rien, en plus d'être bloquant). Comme on ne peut savoir à l'avance
si l'appel s'inscrit dans une transaction déjà en cours, et que JDBC (et la plupart des bases de données)
ne peut pas gérer des transactions imbriquées ("nested transactions"), la règle communément admise
consiste à se limiter à la seule responsabilité pour laquelle a été conçue une classe ou une méthode
(et cette responsabilité n'est pas de gérer des transactions, mais ici de gérer des données de formulaire).
- La méthode getConnection() n'a pas à être déclarée "synchronized", ce qui peut être coûteux.
- Suppression de tous les appels à Connection.comit() et à la méthode rollbackConnection(), cette
dernière ayant été supprimée pour exactement la même raison que la suppression de l'appel à setAutocommit()
dans le point précédent.
Mis à jour par Anonyme il y a plus de 14 ans
- Statut changé de Assigned à Resolved
- % réalisé changé de 0 à 100
Mis à jour par Nicolas Eysseric il y a plus de 14 ans
- Catégorie mis à Formulaires XML
- Statut changé de Resolved à Closed
- Votre version de Silverpeas mis à 5.1