Projet

Général

Profil

Actions

Bug #391

fermé

Report pour synchronisation - form - Gestion explicite des transactions incompatible avec un gestionnaire ou un conteneur transactionnel

Ajouté par Anonyme il y a presque 14 ans. Mis à jour il y a presque 14 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
-
Catégorie:
Formulaires XML
Début:
12/05/2010
Echéance:
% réalisé:

100%

Temps estimé:
Navigateur:
Votre version de Silverpeas:
5.1
Système d'exploitation:
Votre base de données:
PostgreSQL
Livraison en TEST:
Livraison en PROD:

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.

Actions

Formats disponibles : Atom PDF