comment vérifier à partir d'un pilote, si le serveur mongoDB est en cours d'exécution
Je me demande, si il y a un moyen de vérifier si le serveur mongoDB est en cours d'exécution de java pilote pour mongoDB?
Selon le tutoriel, je peux faire
Mongo m = new Mongo();
//or
Mongo m = new Mongo( "localhost" , 27017 );
//and
DB db = m.getDB( "mydb" );
Mais comment vérifier que je peux utiliser ces Mongo DB? Je ne vois pas isConnected() la méthode dans l'API.
db.getConnector().isOpen()
retourne true
La seule façon que j'ai trouvée est de les appeler db.getDatabaseNames() et les captures MongoException.
Si peu plus civilisé?
Suivre cette solution := stackoverflow.com/questions/17194268/...
OriginalL'auteur zmila | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Donc, si vous pouvez faire ce qui suit:
Alors vous êtes connecté à la base de données, sinon que
m.getDB()
serait jeter une exception. Si vous pouvez vous connecter à la base de données, puis la serveur MongoDB est en cours d'exécution.Est là quelque chose de particulièrement mauvais avec cette approche?
Le pilote gère en quelque sorte dans un bac à sable où il peut ou ne peut pas se connecter. Vous demandez au pilote de savoir quelque chose de spécifique sur le serveur (est un processus X en cours d'exécution?), mais ce n'est pas le métier de conducteur. Il peut se connecter soit ou qu'il ne peut pas, il n'est pas responsable de l'exploitation du service/processus, juste pour se connecter à elle.
À savoir que le processus est en cours d'exécution, vous avez besoin de fonctions d'administration sur le serveur qui vous permettent de vérifier que
mongod
est en effet en cours d'exécution avec les paramètres corrects.Si ce n'est pas à jeter un checked exception en Java, qui peut en fait être un bug. Avez-vous vérifié jira.mongodb.org pour un billet?
Peut-être que cette question est devenue obsolète, parce que sur mon actuel mongo version (2.7.3), je peux appeler mongo.getDB("anynameatall") et il ne lance pas d'exception, même quand "connecté" à une URL avec pas de Mongo en cours d'exécution (par exemple, "mongodb://127.0.0.1:12345"). Moi aussi, je suis coincé avec les non civilisés getDatabaseNames() vérifier.
vous ne savez pas faire la Java MongoDB pilote a changé au fil du temps, mais depuis que je l'ai utilisé, Mongo.getDB() n'a jamais réellement touché le serveur. Le pilote ne semble pas déranger la connexion jusqu'à ce qu'il a; getDB() est tout simplement la mise en place du pilote afin de préparer pour le travail réel.
Cette approche ne fonctionne plus. Doit faire : Mongo mongo = new MongoClient("localhost", 27017); test DB = mongo.getDB("test"); DBCollection coll = test.getCollection("test"); coll.findOne();
OriginalL'auteur Gates VP
Vous pouvez exécuter une ping commande
C'est l'équivalent le plus proche de l'Oracle "select 1 from dual" commande friands à ce jour.
OriginalL'auteur Benoît Guérout
J'ai trouvé ceci pour être plus direct que la commande ping:
Il ressemble à mongo.getAddress() retourne null en cas mongo est bas, avez-vous vraiment besoin de ces étapes supplémentaires?
Pas de. Si vous utilisez la version la plus récente qui utilise
MongoClient
exemple,mongoClient.getAddress()
n' pas retournull
. Ne sais pas pour les versions antérieures. C'est en fait la méthode la plus efficace. +1La classe DBTCPConnector retourné par
getConnector()
est obsolète dans la v2.6 et a été supprimée dans Mongo v3.0.OriginalL'auteur Ted M. Young
Elle retourne la valeur null pour l'adresse si mongo est en baisse. Vous pouvez regarder à l'intérieur de la mise en œuvre de getAddress() de voir pourquoi c'est une bonne façon de vérifier les mongo de l'état.
Je suppose que vous avez initialisé la mongo paramètre correctement.
null
même si MongoDB est en baisse. Il renvoie simplement valide com.mongodb.ServerAddress instance qui est initialisé avec l'adresse du serveur et le port de nous fournir tout initialiserMongo mongo
. OuMongoClient mongo
avec une version plus récenteVous pouvez essayer de
mongo.getAllAddress()
OriginalL'auteur amazia
Je n'ai pas testé ce fond (uniquement à l'aide d'un localhost mongo), mais il semble fonctionner pour l'instant:
Et les tests que j'ai utilisé:
Ce n'est pas exactement l'aide d'une API publique donc à utiliser à vos propres risques.
OriginalL'auteur Daniel Flower