samedi 10 septembre 2016

Embedded Mongo, Spring: MongoTimeoutException?

How fix com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:12345, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]

?

Context

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongo" ref="mongo"/>
    <constructor-arg name="databaseName" value="${mongo.database}"/>
    <constructor-arg name="userCredentials" ref="mongoCredentials"/>
</bean>

<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials">
    <constructor-arg name="username" value="${mongo.user}"/>
    <constructor-arg name="password" value="${mongo.password}"/>
</bean>

<bean class="com.mongodb.MongoURI" id="mongoURI">
    <constructor-arg value="${mongo.url}"/>
</bean>

<bean class="com.mongodb.Mongo" id="mongo">
    <constructor-arg ref="mongoURI"/>
</bean>

Properties

mongo.url=mongodb://localhost:12345
mongo.database=local
mongo.user=
mongo.password=

Code

protected static void startMongo() {
    int defaultConfigPort = Network.freeServerPort
    String localhost = "localhost"
    mongoD = startMongoD(defaultConfigPort)
    mongoS = startMongoS(Network.freeServerPort, defaultConfigPort, localhost)
    mongo = new MongoClient(localhost, 12345)
}

private static MongosProcess startMongoS(int port, int defaultConfigPort, String defaultHost) throws
        UnknownHostException, IOException {
    MongosStarter.defaultInstance.prepare(new MongosConfigBuilder()
            .version(Version.Main.PRODUCTION)
            .net(new Net(port, Network.localhostIsIPv6()))
            .configDB(defaultHost + ":" + defaultConfigPort)
            .build())
            .start()
}

private static MongodProcess startMongoD(int defaultConfigPort) throws UnknownHostException, IOException {
    MongodStarter.defaultInstance.prepare(new MongodConfigBuilder()
            .version(Version.Main.PRODUCTION)
            .net(new Net(defaultConfigPort, Network.localhostIsIPv6()))
            .build())
            .start()
}

Aucun commentaire:

Enregistrer un commentaire