2009-10-23 10 views
4

En JBoss documentation il y a possibilité de déclarer <no-tx-datasource> qui stipule:Quels sont les exemples de sources de données non-transactionnelles?

no-tx-datasource: Cet élément est utilisé pour spécifier le (org.jboss.resource.connectionmanager) configuration du service NoTxConnectionManager. NoTxConnectionManager est un gestionnaire de connexion JCA sans prise en charge des transactions.

Je suis curieux de savoir ce qui peut être connecté par ce type de source de données? Ldap? Quels sont les cas d'utilisation pratiques ou les exemples opensource de ce type de configuration?

Répondre

5

L'accès à une base de données en lecture seule est le cas d'utilisation le plus basique auquel je puisse penser. Un autre serait une application qui gère l'état de la transaction elle-même. Et un autre si vous voulez utiliser une connexion qui ne participera pas à une transaction JTA globale. Le dernier se passe en Quartz (voir le JobStoreCMT).

Mais, alors que googler (ce qui est une bonne question!), J'ai trouvé plus d'inspiration dans la section Using Non-Transactional Connections de la documentation du serveur d'applications Sun:

Le principal avantage de l'utilisation de connexions non transactionnelles est que le les frais généraux encourus dans l'enrôlement et la radiation des connexions dans les contextes de transaction sont évités. Cependant, utilisez ces connexions avec soin. Par exemple, si une connexion non transactionnelle est utilisée pour interroger la base de données alors qu'une transaction en cours modifie la base de données, la requête récupère les données non modifiées dans la base de données. Cela est dû au fait que la transaction en cours n'a pas été validée. Pour un autre exemple, si une connexion non-transactionnelle modifie la base de données et qu'une transaction qui s'exécute simultanément est annulée, les modifications apportées par la connexion non-transactionnelle ne sont pas annulées. Voici un cas d'utilisation typique pour une connexion non transactionnelle: un composant qui met à jour une base de données dans un contexte de transaction couvrant plusieurs itérations d'une boucle peut actualiser les données mises en cache en utilisant une connexion non transactionnelle pour lire les données avant la transaction est validée.

Intéressant ...

+0

+1 Merci Pascal. J'ai aussi google mais je n'ai pas trouvé d'informations exhaustives. Paramètres de connexion JDBC suggéré qui peut être utilisé avec des bases de données, mais je n'ai pas vu le but de cela jusqu'à votre grande explication. – cetnar

0

Toutes les sources de données sont tx, une source de données peut également représenter un fichier sur le disque.

Questions connexes