2012-09-24 76 views
1

同时连接使用Spring数据到MongoDB中获取以下错误:春数据的MongoDB抛出错误连接被拒绝

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:228) 
at com.mongodb.DBPort.go(DBPort.java:112) 
at com.mongodb.DBPort.call(DBPort.java:79) 
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:218) 
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305) 
at com.mongodb.DB.getCollectionNames(DB.java:284) 
at org.springframework.data.mongodb.core.MongoTemplate$14.doInDB(

请找我的配置:

@Configuration 
public class AppConfig { 

public @Bean MongoOperations mongoTemplate(Mongo mongo) { 
    MongoTemplate mongoTemplate = new MongoTemplate(mongo, "mydb"); 
    return mongoTemplate; 
} 

/* 
* Factory bean that creates the Mongo instance 
*/ 
public @Bean MongoFactoryBean mongo() { 
    MongoFactoryBean mongo = new MongoFactoryBean(); 
    mongo.setHost("10.6.120.180"); 
    mongo.setPort(27017); 
    return mongo; 
} 

/* 
* Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes 
*/ 
public @Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() { 
    return new PersistenceExceptionTranslationPostProcessor(); 
} 

}

蒙戈上下文测试.xml

<mongo:db-factory dbname="mydb"/> 
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg ref="mongoDbFactory"/> 
</bean> 

我是Spring Data和MongoDB的新手。请指教,为什么我得到这个错误?

在此先感谢。

+0

这是奇怪的是连接错误说IP地址127.0.0.1(本地主机),但你叫'mongo.setHost( “10.6.120.180”)。 IP地址10.6.120.180是不同的主机? – HeatfanJohn

回答

2

你确定你的AppConfig类正在被使用吗?

正如我评论中提到的那样,您收到的错误表明您的程序正在尝试连接到服务器127.0.0.1上的MongoDB,而您发布的AppConfig类明确显示您要连接到IP地址10.6.120.180

如果您以某种方式获取包含mongo.setHost("localhost")的AppConfig类(这在Github上发布的示例代码中),就会发生这种情况。

更新:基于OP的评论在Mongo-context-test.xmlmongoTemplate类参考指着Spring框架的默认MongoTemplate类。

根据SpringSource的文档Introduction to MongoTemplate使用可以使用Java创建和注册使用Spring的XML <beans/>模式的MongoTemplate 配置一个MongoTemplate的实例。

显然,使用<beans/>模式优先于您在Java中的实现。如果您使用<beans/>架构,那么您需要使用<mongo:mongo host="localhost" port="27017"/>来指定您的主机和端口要求,如OP在其评论中所述。

+0

谢谢你的答复。正如你所说,它没有得到调用AppConfig。它通过更改文件Mongo-context-test.xml Jagan

+0

啊,是的,我现在看到,你的mongoTemplate bean id引用类org.springframework.data.mongodb.core.MongoTemplate'。改变它以指向你的类包含AppConfig,而不是添加'主机'也可能会工作 – HeatfanJohn

+0

任何人都可以帮助同一个问题,但在另一个角度?:)如何配置春季启动应用程序快速失败,如果连接到Mongo被拒绝? 在此先感谢 –

0

如果你打算定义自己的配置Bean,与您的自定义名称,你可以通过做排除Spring的自动配置类:

@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) 

OR

@SpringBootApplication(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) 

记住:时使用带排除列表的EnableAutoConfiguration/SpringBootApplication确保没有其他类使用EnableAutoConfiguration或SpringBootApplication进行注释。

来源:How to disable spring-data-mongodb autoconfiguration in spring-boot

相关问题