Spring Data Mongo sembra ignorare l’host nella configurazione XML

Sto cercando di ottenere un semplice programma “Hello World” con Spring-Data e MongoDB attivi e funzionanti. Spring sembra ignorare l’indirizzo IP dell’host MongoDB configurato nell’elemento e tenta invece di connettersi a 127.0.0.1 .

Come da tutorial, ecco il mio XML di Spring Configuration:

        

Il programma:

 import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; public class Test1 { public static void main(String[] args) { ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml"); MongoOperations mo = (MongoOperations)ctx.getBean("mongoTemplate"); DbDocument a = new DbDocument("John Smith", "[email protected]"); if (!mo.collectionExists(DbDocument.class)) //<<<----- Exception here mo.createCollection(DbDocument.class); mo.save(a); } } 

L’eccezione generata:

 WARNING: Exception executing isMaster command on /127.0.0.1:27017 java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException: Connection refused: connect at com.mongodb.DBPort._open(DBPort.java:214) at com.mongodb.DBPort.go(DBPort.java:107) at com.mongodb.DBPort.go(DBPort.java:88) at com.mongodb.DBPort.findOne(DBPort.java:143) at com.mongodb.DBPort.runCommand(DBPort.java:148) at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:548) at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:527) at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:277) at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:257) at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:310) at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295) at com.mongodb.DB.getCollectionNames(DB.java:412) at com.mongodb.DB.collectionExists(DB.java:454) at org.springframework.data.mongodb.core.MongoTemplate$5.doInDB(MongoTemplate.java:438) at org.springframework.data.mongodb.core.MongoTemplate$5.doInDB(MongoTemplate.java:436) at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:372) at org.springframework.data.mongodb.core.MongoTemplate.collectionExists(MongoTemplate.java:436) at org.springframework.data.mongodb.core.MongoTemplate.collectionExists(MongoTemplate.java:432) at org.nwea.jhg.mongo.Test1.main(Test1.java:18) 

Sono in grado di connettermi all’istanza Mongo all’indirizzo specificato 10.125.0.68 con uno strumento GUI e confermare che esiste un database denominato test .

Ho trovato un paio di successi in StackOverflow ma nessuno dei due è sufficientemente simile al mio caso da essere utile per risolvere il problema.

La tua mongo db-factory non identifica l’IP del database MongoDB che dovrebbe usare.

Prova ad usare una db-factory che fa riferimento al valore di mongoTemplate :

   

Questo dovrebbe funzionare anche: