2011-01-10 13 views
9

Gemäß der MongoDB Java-Treiberdokumentation wird das Datenbankverbindungs-Pooling auf magische Weise vom Mongo-Objekt gehandhabt.MongoDB Java Driver Datenbankverbindungspooling mit Tomcat

Dies bedeutet, dass es sicher ist, eine Instanz eines Singleton-Objekts zu erstellen, das mit der MongoDB-Datenbank in einem Servlet verbunden ist, das beim Start von Tomcat ausgeführt wird und sich nicht darum kümmert, das Datenbankverbindungspooling in Tomcat über die Datei context.xml zu konfigurieren?

Ist das der richtige Weg, darüber nachzudenken? Missverstehe ich ein grundlegendes Konzept von Tomcat/Datenbankverbindungs-Pooling allgemein?

+0

Dank Anaon Ich habe die gleiche Frage, aber Sie haben es viel besser formuliert als ich es getan habe. – DevilCode

Antwort

9

Wir haben die Java-Treiber über das Projekt CFMongoDB verwendet und verwenden es wie beschrieben, jedoch in einer ColdFusion-Anwendung und nicht in Java. Die gleiche Idee: Ein Objekt wird erstellt und wir verwenden es erneut, und dieses Objekt behält die eine Verbindung zum Mongo-Server bei.

Sie können eine Mongo Java-Instanz erstellen, die einen internen Pool von Verbindungen verwaltet (Standardgröße 10) - für Sie ist sie versteckt und Sie brauchen sich keine Gedanken darüber zu machen. Die Mongo Java docs empfehlen diese:

http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency

Wir haben es in der laufenden Produktion haben jetzt, und es gab keine Probleme gewesen. Mehrere Web-Request-Threads verwenden die gleiche Mongo-Instanz und Mongo ist schnell genug, um mit dem internen Pool umzugehen (wir machen das Logging, damit es sehr schnell schreiben kann!).

Es ist daran zu erinnern, close() auf alle Fälle zu nennen, die Sie mit fertig sind - das wird aufhören Verbindungen auf dem Mongo-Server im Laufe der Zeit aufgebraucht zu werden:

http://api.mongodb.org/java/2.5-pre-/com/mongodb/Mongo.html#close()

Also zusammenfassend, don Mach dir keine Sorgen über die Konfiguration von Tomcat.

Hoffe, dass hilft!