如何修复“com.mongodb.MongoSocketOpenException:异常打开套接字”错误?

问题描述 投票:0回答:4

我正在尝试使用 spring-boot 连接 mongodb 。当我这样做时,我遇到了这个错误

     [localhost:27107] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27107
     com.mongodb.MongoSocketOpenException: Exception opening socket

快速搜索建议我将其添加到主类中

      @SpringBootApplication
      @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})

我这样做之后,错误就消失了。但数据库尚未在 mongodb 中创建,当我检查 spring-boot 日志时,没有与 mongodb 相关的日志。

在此处附加我的 POM.XML

       <properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-mongodb</artifactId>
        <version>4.1.3</version>
    </dependency>


</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.3</version>
            <dependencies>
                <dependency>
                    <groupId>com.querydsl</groupId>
                    <artifactId>querydsl-apt</artifactId>
                    <version>4.1.3</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/annotations</outputDirectory>
                        <processor>
                            org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor
                        </processor>
                        <logOnlyOnError>true</logOnlyOnError>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build> 

如果您能帮助我,请告诉我

mongodb spring-boot
4个回答
3
投票

我遇到了同样的问题 - mongo 说它已通过端口、集群和所有内容连接到数据库,但是当它尝试在数据库上启动监视器时,连接被拒绝。检查了所有可能的 mongo 配置后,发现问题出在我的防火墙中 - 它阻止了我的 java 连接,因此当 netty 尝试连接到 mongo 时,防火墙阻止了该连接。

希望有帮助。


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

将其添加到主类中。


0
投票

我的解决方案是:

@SpringBootApplication @EnableAutoConfiguration(排除={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;

@Configuration
public class MongoConfig {

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(new SimpleMongoClientDatabaseFactory("mongodb://localhost:27017/yourDatabaseName"));
    }
}

-3
投票

仅为测试配置嵌入式 MongoDB 应该可以消除该错误。

© www.soinside.com 2019 - 2024. All rights reserved.