2016-03-07 80 views
3

我目前正在開發一個連接到遠程MongoDB數據庫的Java應用程序。MongoDB試圖連接到本地主機,爲什麼?

我已經實現了身份驗證方法休耕蒙戈指南:

MongoCredential credential = MongoCredential.createScramSha1Credential(username, credentialDatabase, password.toCharArray()); 
MongoClient client = new MongoClient(new ServerAddress(hostname, port), Arrays.asList(credential)); 
mongoDatabase = client.getDatabase(database); 

該應用程序正確地連接到數據庫,但我不能understand.It以及連接到遠程服務器的事情,但我不知道爲什麼它嘗試連接到本地主機:27017。

2016-03-07 16:13:29.662 INFO 12507 --- [*.*.*:25015] org.mongodb.driver.connection   : Opened connection [connectionId{localValue:1, serverValue:29}] to *.*.*.*:25015 

2016-03-07 16:13:29.687 INFO 12507 --- [*.*.*:25015] org.mongodb.driver.cluster    : Monitor thread successfully connected to server with description ServerDescription{address=*.*.*.*:25015, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 3]}, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, roundTripTimeNanos=24485426} 


2016-03-07 16:13:30.062 INFO 12507 --- [   main] org.mongodb.driver.cluster    : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 


2016-03-07 16:13:30.220 INFO 12507 --- [localhost:27017] org.mongodb.driver.cluster    : Exception in monitor thread while connecting to server localhost:27017 

com.mongodb.MongoSocketOpenException: Exception opening socket 

所以,我怎麼能告訴它我不希望連接到本地主機?

感謝

+0

你可以張貼'hostname'字符串? –

+0

這應該回答你的問題。 https://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod – user2263572

+0

主機名字符串是我的服務器的IP地址 – adenaud

回答

4

您可以排除蒙戈自動連接/(本地主機:27017)加入下面的註釋上春天開機Application.java

@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class}) 
public class Application { 
    // ... 
} 
+0

不知道爲什麼這是downvoted;這正是幫助我的信息。 –

+0

當我排除本地主機時,它要求我把本地主機放回...... – santafebound

1

我不確定這是否有幫助。

如果您使用的是SpringBoot 1.4,並且您在上下文自動配置中沒有MongoClient的bean,將使用默認配置創建MongoClient。

@Configuration 
---->@ConditionalOnClass(MongoClient.class)<---- 
@EnableConfigurationProperties(MongoProperties.class) 
@ConditionalOnMissingBean(type = "org.springframework.data.mongodb.MongoDbFactory") 
public class MongoAutoConfiguration { 
... 
    @Bean 
    ---->@ConditionalOnMissingBean<---- 
    public MongoClient mongo() throws UnknownHostException { 
     this.mongo = this.properties.createMongoClient(this.options, this.environment); 
     return this.mongo; 
    } 
... 

所以,你有3種選擇:

  1. 排除了蒙戈自動配置。
  2. 在上下文中將MongoClient作爲bean公開。
  3. 爲SpringBoot /蒙戈配置和自動配置繼電器的使用默認的方式創造MongoClient你: spring.data.mongodb.host= spring.data.mongodb.port= spring.data.mongodb.database= spring.data.mongodb.username= spring.data.mongodb.password=
相關問題