Normalerweise schliesst man eine Connection zu einer Datenbank in der Methode, in der man sie öffnet (oder man ist wirklich ernsthafter Frameworkprogrammierer und kennt sich wirklich mit so Zeugs wie ThreadLocals usw. aus).
Oder man benutzt einen Connection Pool, der diese komplexe Aufgabe für einen regelt und den man nicht selber programmieren muß, weils das schon gibt.
Das Problem ist nur, dass du eine Art globales Singleton haben mußt, das für alle Notes Agenten erreichbar ist und genau das ist schwierig.
Hast du dir mal überlegt, die Connections über RMI zu managen?
D.h. Du lässt eine Connection-Pool Anwendung auf einem RMI-Server laufen und du besorgst dir von dort die Connections von Domino aus?
Oder wie wärs mit Websphere. Die Einstiegsversion ist ja Lizenzmässig für Domino mit bei und da auch ein bereits fertig programmierter Connection Pool Mechanismus, den du über jndi ansprechen kannst und der gut dokumentiert sein sollte?
Die einzige Chance, die ich für selbstgedrehtes Threading sehe, bestehen in Daemon Threads (
http://www.dpunkt.de/java/Programmieren_mit_Java/Multithreading/8.html). Ich würd mich nur sehr wundern, wenn Domino das zulassen würde.
Und... wie willst du später eine Referenz darauf bekommen.
Normal würd man ja davon ausgehen, dass man jede DatenbankConnection, die man in einem Notes Agent Call öffnet auch wieder schliesst. (kann man nicht oft genug sagen
)
Natürlich ist das Erstellen der Connection eine kostspielige Operation und deshalb gabs ja in J2EE sehr früh diese Connection Pools.
In Domino ist das nur sehr schwer zu nutzen, da es keine globalen Objekte gibt, deren Lebenszyklus die Laufzeit der Anwendung umfasst wie z.B. ServletContext
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html .
Ralfs Idee die alte Domino Servlet Engine auszukramen halte ich für auf jeden Fall bedenkenswert. Da hast du einen globalen Objektspace, der während der gesamten Laufzeit der Anwendung im Zugriff ist und lebt.
VORSICHT MIT OFFENEN CONNECTIONS.
V.a. musst du auch checken, dass diese nicht stalled sind usw.
Wie gesagt: Für genau so ein performantes und qualitätssicherndes Zeugs wie das hier gibts eben die ganze J2EE Platform mit ihren Produkten.
Axel