2012-10-17 5 views
2

Je tente d'écrire à mongodb à partir d'une application déployée dans JBOSS, c'est ce que je reçois, y at-il quelque chose que je dois faire dans mongodb? Cela semble être un problème de simultanéité des discussions dans les forums.Exception exécutant la commande isMaster sur mongodb

14:00:07,083 WARNING [com.mongodb.tcp] (Camel (camel-2) thread #3 - JmsConsumer[barTopic]) Exception executing isMaster command on /127.0.0.1:27017: java.lang.NullPointerException 
     at com.mongodb.DBPort._open(DBPort.java:203) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBPort.go(DBPort.java:107) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBPort.go(DBPort.java:88) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBPort.findOne(DBPort.java:143) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBPort.runCommand(DBPort.java:148) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:539) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.Mongo.getMaxBsonObjectSize(Mongo.java:600) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:233) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:205) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBCollection.insert(DBCollection.java:57) [mongo-java-driver-2.9.1.jar:] 
     at com.mongodb.DBCollection.insert(DBCollection.java:100) [mongo-java-driver-2.9.1.jar:] 
     at com.magick.magicktrader.BarServiceBean.addBarToMongoDB(BarServiceBean.java:196) [magicktrader.jar:0.6.0-SNAPSHOT] 
     at com.magick.magicktrader.BarServiceBean.getBar(BarServiceBean.java:40) [magicktrader.jar:0.6.0-SNAPSHOT] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_10] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_10] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_10] 
     at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_10] 

La méthode call

MongoURI uri = null; 
     uri = new MongoURI("mongodb://localhost:27017"); 

     try{ 
    mongo = new Mongo(uri); 
    } catch (NumberFormatException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (UnknownHostException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
}  
    //prop.getProperty("database") 
    db = mongo.getDB("charts"); 
    db.requestStart(); 
    //prop.getProperty("collection") 
    dbCollection = db.getCollection("bars"); 


    /** 
    * Bar Structure - attributes 
    * 
    * symbol,low,high 
    * open,close,time 
    * volume; 
    **/ 
    for (Bar bar : barList) { 
     document = new BasicDBObject(); 
     document.put("symbol", bar.getSymbol()); 
     document.put("low", bar.getLow()); 
     document.put("high", bar.getHigh()); 
     document.put("open", bar.getOpen()); 
     document.put("close", bar.getClose()); 
     document.put("time", bar.getTime()); 
     document.put("volume", bar.getVolume()); 
     //dbCollection.insert(document); 
     //prop.getProperty("collection").trim() 
     dbCollection.getCollection("bars"); 
     dbCollection.save(document, WriteConcern.NORMAL); 
    } 
+0

De quel problème de concurrence parlez-vous? Un problème avec le pilote Java? Qu'est-ce que "écrire" essayez-vous? –

+0

@Mark Hillick, en quelque sorte je suis mélangé, j'ai un appel de méthode qui fonctionne quand je fais une méthode principale, mais ne fonctionne pas quand je lance ceci dans jboss, laissez-moi ajouter l'appel de méthode dans la question, initialement jboss, mais j'ai fourni les dépendances du module mais je suis toujours coincé –

+0

Je ne suis pas familier avec jboss donc je ne peux pas vraiment vous aider, désolé :(Votre méthode crée une seconde instance de MongoDB, il ne devrait y avoir qu'une seule instance MongoDB créée. –

Répondre

0

1> Ceci est probablement le problème de raccordement différent, j'ai eu le même genre de problème qui est venu parce que «j'appelle le même ConnectionClass plusieurs fois » . Je l'ai réparé en faisant la classe de connexion singleton. J'ai utilisé la classe MongoClient pour la connexion. Donc, je vais l'expliquer en mots, Obtenir une connexion pour mongoDb pour la première fois seulement, à partir de la deuxième fois utiliser la même connexion. Je suis aussi nouveau sur Mongos, J'espère que cela fonctionne.

0

1 la meilleure chose à vérifier est

  • vérifier la MongoDB est en cours d'exécution
  • vérifier si le nom d'utilisateur et mot de passe est correct
  • vérifier si le nom d'utilisateur que vous essayez d'utiliser pour accéder à la base de données a le propriétaire ou le droit

    doit être ajouté comme celui-ci

    db.addUser("test","test") ------- this will add the default username and password in which the app uses. 
    check if the user is created properly db.system.users.find() ----- you should see you new user in the returned list 
    log out .... db.runCommand({"logout":1}) 
    use databasename 
    db.auth("test","test") //do the authorizxation 
    
0

J'ai le même problème et je résolus modifier le fichier de configuration: /etc/mongod.conf et faire cela change:

#port = 27017 -> port = 27017 
bind_ip = 127.0.0.1 -> #bind_ip = 127.0.0.1 

Avec cela, toutes les machines peuvent se connecter à votre MongoDB.

Rappelez-vous redémarrer MongoDB ("sudo service de redémarrage mongod")

Après cela, mettre à jour la dernière version du pilote (2.12.0) et c'est des œuvres.

Questions connexes