Bonjour,
Je vais essayer d'âtre clair car c'est un peu compliqué...
Je développe une application N-Tiers dont la partie serveur se trouve dans une Dll.
Le client accède aux fonctions de la dll via des interfaces de la bibliothèque de types définies dans le service de composants Windows. (demarrer\panneau de config\outils d'administration\service des composants)
J'ai donc un composant qui s'active le quand une demande lui est faite. (petit rappel : les composants du service de composant sont en attente d'un message (via COM/COM+) qui à été lancé par un client via les interfaces décrites ci dessus)
Ce composant (entre autres) accède à une base de données. Lors de la première activation la connexion à la base de données se fait et tout roule.
Il arrive que la base tombe (exemple la nuit elle est arrêtée pour une sauvegarde) Mon programme lui n'en sait rien... sauf que ses objets (ADO et BDE) sont connectés à une instance de base de donnée qui n'existe plus ! bref ca plante.
Le seul moyen pour que tout reparte dans l'ordre est de faire un click droit sur mon composant et de faire "arrêter". Lors de la demande suivante, il redémarre, se reconnecte du coup et tout fonctionne.
Or ce n'est pas jouable en production, il faudrait que quand je me rends compte de la coupure à la base de données j'arrête mon composant pour qu'il refasse ses connections à la demande suivante du poste client.
Or je n'y arrive pas avec delphi (D6 SP2). Impossible de trouver une fonction qui stoppe un composant du service de composant.
PS : ce n'est pas un service windows, mais bien un composant du service de composants.
Quelqu'un a-t-il une solution ??
Merci bcp.
Partager