Le jeudi 19 janvier 2006 à 14:52 +0100, Martin Blaizot a écrit : Bonjour,
> Il semble donc que j'essaie d'ouvrir une connexion avant que la > précédente ne soit fermée; existe-t-il un moyen de tester l'état de ma > connection afin de remplacer mon wait par quelque qui voudrait dire : > "wait while omaConnexion is not closed" > Au lieu de te déconnecter de la base chaque fois, tu pourrais instancier le pooling des connexions, ou passer par le RowSet existant. Traduction de l'API (ma cuvée) : Regroupement des Connexions Dans une implémentation de base, il existe une relation de 1:1 entre l'objet com.sun.star.sdb.Connection utilisé par l'application cliente et la connexion physique à la base de données. Lorsque l'objet Connection est fermé la connexion physique est abandonnée, et ainsi la charge mémoire de la réouverture, réinitialisation, et fermeture pour la connexion physique se présente pour chaque nouvelle session cliente. Un pool ou regroupement de connexions résoud de problème en maintenant dans un cache une liste de connexions physiques de bdd qui peuvent être réutiliséesà travers plusieurs sessions clientes. Le regroupement de connexions améliore la performance et la mise à l'échelle, en particulier dans un environnement à trois étages où de clients multiples peuvent partager un plus petit nombre de connexions physiques aux bdd. Dans l'API OpenOffice.org, le regroupement de connexions fait partie d'un service spécial appelé ConnectionPool. Ce service gère les connexions physiques nouvellement créées et réutilise celles qui existent déjà même lorsqu'elles ne sont plus en utilisation actuelle. L'algorithme utilisé pour gérer le regroupement de connexions est spécifique à une implémentation donnée et donc varie entre les différents serveurs d'applications. Le serveur d'applications fournit ses clients avec une implémentation de l'interface com.sun.star.sdbc.XPooledConnection , rendant le regroupement transparent au client. Il en résulte que le client ne subit pas les impacts négatifs sur la performance et la mise à l'échelle. Lorsqu'une application a terminé son utilisation d'une connexion, elle ferme la connexion logique par le biais de close() au niveau de l'interface de connexion com.sun.star.sdbc.XConnection. Cette opération ferme la connexion logique, mais garde ouverte la connexion physique. La connexion physique est ainsi remise dans le regroupement de manière à pouvoir être réutilisée. Le regroupement de connexions est complètement transparent pour le client: un client obtient une connexion regroupée depuis le service com.sun.star.sdbc.ConnectionPool après appel de getConnectionWithInfo() au niveau de l'interface com.sun.star.sdbc.XDriverManager et l'utilise exactement de la même manière qu'une connexion non-regroupée. Les étapes suivantes souligne ce qui se passe lorsqu'un client SDBC demande une connexion à l'objet ConnectionPool : 1. Le client obtient une instance de com.sun.star.sdbc.ConnectionPool depuis le gestionnaire de service global et fait appel aux mêmes méthodes à l'objet ConnectionPool que pour le gestionnaire de pilotes DriverManager. 2. Le serveur d'applications qui fournit l'implémentation ConnectionPool vérifie son regroupement de connexions pour l'existence d'un objet PooledConnection approprié, c'est-à-dire une connexion physque à une bdd, et qui est disponible. La détermination de la disponibilité d'un tel objet PooledConnection implique de comparer les informations de l'authentification utilisateur ou type d'application, ainsi que d'autres critères spécifiques à l'implémentation choisie. La méthode de recherche et d'autres méthodes associées à la gestion du regroupement de connexion sont spécifiques au serveur d'applications. 3. S'il n'existe aucun objet PooledConnection approprié disponible, le serveur d'applications génère une nouvelle connexion physique et renvoie un objet PooledConnection. Le ConnectionPool n'est pas dépendant d'un quelconque pilote, mais est implémenté par un service appelé com.sun.star.sdbc.ConnectionPool. 4. Indépendamment du fait que le PooledConnection ait été ou non récupéré du regroupement ou généré, le serveur d'application effectue un enregistrement interne afin d'indiquer que la connexion est désormais en utilisation. 5. Le serveur d'application appelle la méthode PooledConnection.getConnection() afin d'obtenir un objet de Connection logique. Cet objet de Connection logique est un pointeur vers un objet PooledConnection physique. Ce pointeur est renvoyé par la méthode getConnectionWithInfo() du XDriverManager lorsque le regroupement des connexions est activé. 6. L'objet de Connection logique est renvoyé au client SDBC qui utilise le même API Connection que dans le cas où le regroupement n'est pas utilisé. A noter toutefois que la connexion physique sous-jacente ne peut être réutilisée avant que le client n'appelle la méthode close() de XConnection. Dans l'API de OpenOffice.org, le regroupement de connexions est activé par défaut et peut être contrôlé à travers le menu Outils – Options – OpenOffice.org Database . Si une connexion d'une source de données définie dans l'API de OpenOffice.org API est renvoyée, le paramètre activé par cette option (le regroupement des connexions) s'appliquera également à votre connexion. Afin de profiter du regroupement indépendamment des sources de données définies dans l'API OpenOffice.org, il faut plutôt passer par com.sun.star.sdbc.ConnectionPool au lieu du DriverManager. Connexions superposées Parfois, il se peut qu'il existe déjà un row set de sources de données connecté et que vous souhaitez réutiliser sa connexion, par exemple, dans le cas où un utilisateur a ouvert un formulaire de bdd. Afin d'accéder à la même base de données et le même row set que le formulaire, on peut utiliser la connexion qui est déjà utilisée par le formulaire, et ainsi éviter d'ouvrir une deuxième connexion. Tout ceci est possible à travers com.sun.star.sdb.RowSet qui dispose d'une propriété ActiveConnection qui renvoie la connexion. Espérant avoir aidé, Alex --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]