java – Spring Data Mongo似乎忽略了XML配置中的主机
发布时间:2020-12-15 05:00:49 所属栏目:Java 来源:网络整理
导读:我正在尝试使用 Spring-Data和MongoDB启动并运行一个简单的“Hello World”程序. Spring似乎忽略了 mongo:mongo /中配置的MongoDB主机IP地址.元素并尝试连接到127.0.0.1. 根据各种教程,这是我的Spring配置XML: beans xmlns="http://www.springframework.or
我正在尝试使用
Spring-Data和MongoDB启动并运行一个简单的“Hello World”程序. Spring似乎忽略了< mongo:mongo />中配置的MongoDB主机IP地址.元素并尝试连接到127.0.0.1.
根据各种教程,这是我的Spring配置XML: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <mongo:mongo host="10.125.0.68" port="27017" /> <mongo:db-factory dbname="test" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean> </beans> 该程序: 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","jsmith@plymouth.org"); if (!mo.collectionExists(DbDocument.class)) //<<<----- Exception here mo.createCollection(DbDocument.class); mo.save(a); } } 引发的异常: 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) 我能够使用GUI工具连接到指定地址10.125.0.68的Mongo实例,并确认有一个名为test的数据库. 我在StackOverflow中发现了几个命中,但是没有一个与我的案例足够相似,可用于解决问题. 解决方法
您的mongo db-factory无法识别应使用哪个MongoDB数据库IP.
尝试使用引用mongoTemplate值的db-factory< constructor-arg name =“mongoDbFactory”ref =“mongoDbFactory”/>: <mongo:mongo id="mongo" host="10.125.0.68" port="27017" /> <mongo:db-factory id="mongoDbFactory" host="10.125.0.68" port="27017" username="admin" password="xxx" dbname="test" mongo-ref="mongo" /> 这也应该有效: <mongo:mongo id="mongo" host="10.125.0.68" port="27017" /> <mongo:db-factory dbname="test" mongo-ref="mongo" /> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |