簡體   English   中英

春季啟動-嵌入式mongodb連接被拒絕

[英]spring boot - embedded mongodb connection refused

這個示例春季啟動項目中,我要測試MongoRepository持久層以及使用嵌入式mongodb使用存儲庫的Service類。 但是,我收到一個Connection refused: connect錯誤( java.net.ConnectException ),請參閱下面的詳細堆棧跟蹤。

這是我的考試課

@RunWith(SpringRunner.class)
@SpringBootTest(classes=MongoConfig.class)
@TestPropertySource(locations = "classpath:application-test.properties")
public class Test_TimezoneDao {

    private static final Logger LOG = LoggerFactory.getLogger(Test_TimezoneDao.class);

    @Autowired private TimezoneDao dao;
    @Autowired private CounterService counterService;


    @Test
    public void test() 
    { /*...*/ }
}

使用此配置類

@Profile("test")
@SpringBootConfiguration
@ComponentScan(basePackages= {"com.example.demomongodb"})
@EnableMongoRepositories(basePackages= {"com.example.demomongodb"})
@EnableAutoConfiguration
@AutoConfigureDataMongo
public class MongoConfig 
{ }

為了讓春天使用我導入的嵌入式mongodb

       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-mongodb</artifactId>
       </dependency>

        <dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>cz.jirutka.spring</groupId>
            <artifactId>embedmongo-spring</artifactId>
            <version>1.3.1</version>
            <scope>test</scope>
        </dependency>

並在application-test.properties配置

spring.profiles.active=test
# tried both random port (port=0) and deterministic port
spring.data.mongodb.port=27019
spring.data.mongodb.host=localhost
spring.data.mongodb.database=mongo-example

完整的錯誤是這樣的:

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) ~[mongodb-driver-core-3.6.3.jar:na]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_92]
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_92]
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_92]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_92]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_92]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_92]
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_92]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_92]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_92]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:59) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.java:57) ~[mongodb-driver-core-3.6.3.jar:na]
    ... 3 common frames omitted

謝謝您的幫助!

編輯

還嘗試從所有應用程序屬性中刪除mongo主機和端口,相同的問題

編輯2

當我按照春季啟動文檔中的建議將mongodb端口更改為0時,我得到java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine 因此它確實嘗試使用端口0,並且不使用spring boot docs中所述的隨機端口。 這似乎根本不起作用。

我認為您也需要在mongo config中創建此bean。

@Bean(destroyMethod="close")
public Mongo mongo() throws IOException {
    return new EmbeddedMongoBuilder()
        .version("2.4.5")
        .bindIp("127.0.0.1")
        .port(12345)
        .build();
}

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM