Validation automatique des transactions si pas explicitement engagé ou rolledback
nous utilisons Weblogic server et toujours set autoCommit "faux" lors de la prise de Connexion à Oracle 10g.
Je veux savoir si il y a un paramètre dans Weblogic où il va automatiquement les transactions de validation si un Commit ou Rollback n'est pas explicitement appelés dans le code de l'application. J'ai entendu paramètre similaire existe dans Websphere.
Vous devez vous connecter pour publier un commentaire.
Il semble que vous n'êtes pas en utilisant soit Container-managed ou Bean-managed transactions. Ou, d'ailleurs, vous êtes simplement à la récupération d'une connexion à partir d'un
DataSource
et de désactivationautocommit
, sans la mise en place initiale d'un contexte de transaction; ceci implique que vous êtes à l'aide de JDBC transactions (qui s'appuient sur le gestionnaire de transactions de la base de données).Lorsque vous utilisez un Récipient ou un Bean géré des opérations, vous n'aurez plus à vous soucier de la
autocommit
propriété d'unConnection
utilisé dans une transaction, comme le conteneur de s'assurer que leautocommit
propriété est définie sur false, avant de retourner leConnection
à l'application.Si vous avez besoin d'utiliser Container-managed des opérations, vous aurez besoin d'utiliser les Ejb. Toute transaction associés à un EJB engagera automatiquement, à moins d'un
RuntimeException
ou unApplicationException
est levée.Si vous avez besoin d'utiliser Bean géré par programmation ou de transactions, vous devrez utiliser le
un usertransaction
API.Si vous utilisez un ORM comme Hibernate qui est responsable de l'établissement des connexions, alors vous devez vous rappeler qu'il est Hibernate qui est responsable de la coupure de l'autocommit propriété de la Connexion. et dans la plupart des cas, il doit passer hors de la propriété.
Si vous avez l'intention d'utiliser JDBC transactions, malgré la meilleure alternative de transactions JTA, alors vous pouvez tenter de définir la
defaultAutoCommit
bien pour le pilote, que ce soit depuis la Console d'administration, ou dans le JDBC fichier de configuration de la source de données. L'extrait de l'JDBC fichier de configuration est indiqué ci-dessous:Dans la Console d'Administration, vous pouvez ajouter le
defaultAutoCommit=false
de la propriété dans les Propriétés textarea de la source de données de configuration:Les connexions configurées à l'intérieur d'un pool de connexions sur le Serveur d'Application ne sont pas vraiment fermé lorsque vous appelez la
connection.close()
méthode, en réalité, ils sont retournés à la connexion de la piscine, et peut être utilisé par la demande de l'objet. Vous ne savez pas si la connexion de source de données piscines permettra de suivre si il y a des modifications non validées sur une connexion retournés à la piscine et à effectuer une auto commit ou rollback sur elle?Paramètre de validation automatique de faux est la bonne chose à faire.
Tous les SGBDR que je sais de valider la transaction à la fin, sauf si explicitement annulée. Voyez-vous un comportement différent? Si vous soupçonnez que quelque chose est incorrect, une option est à activer l'enregistrement dans le serveur de base de données, où que vous seriez en mesure de voir la validation de la demande. J'ai peur je ne sais pas comment le faire dans Oracle.
De journalisation dans le serveur d'application peut ne pas être utile, car elle peut aussi ne pas être d'émission explicite commettre