【问题标题】:spring boot - embedded mongodb connection refusedspring boot - 嵌入式mongodb连接被拒绝
【发布时间】:2018-08-29 16:36:08
【问题描述】:

this example spring boot project 中,我想测试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 
{ }

让spring使用我导入的嵌入式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

当我按照spring boot docs 中的建议将 mongodb 端口更改为 0 时,我得到了java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine。所以它真的尝试端口 0 并且不使用 spring boot 文档中描述的随机端口。这似乎根本不起作用..

【问题讨论】:

    标签: java spring spring-boot spring-mongodb


    【解决方案1】:

    我认为你也需要在 mongo 配置中创建这个 bean。

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

    source

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2020-12-31
    • 2018-09-22
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    相关资源
    最近更新 更多