web-dev-qa-db-fra.com

Exception dans le thread du moniteur lors de la connexion au serveur localhost: 27017 lors de l'accès à MongoDB avec Java

J'ai l'exception suivante lors de l'exécution de l'application Java pour MongoDB:

[localhost:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27017 while accessing MongoDB with Java

La pile d'appels est la suivante:

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.Java:63) ~[mongodb-driver-core-3.0.4.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.Java:114) ~[mongodb-driver-core-3.0.4.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.Java:127) ~[mongodb-driver-core-3.0.4.jar:na]
    at Java.lang.Thread.run(Thread.Java:745) [na:1.8.0_45]
Caused by: Java.net.ConnectException: Connection refused: connect
    at Java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_45]
    at Java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.Java:85) ~[na:1.8.0_45]
    at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:345) ~[na:1.8.0_45]
    at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:206) ~[na:1.8.0_45]
    at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188) ~[na:1.8.0_45]
    at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:172) ~[na:1.8.0_45]
    at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392) ~[na:1.8.0_45]
    at Java.net.Socket.connect(Socket.Java:589) ~[na:1.8.0_45]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.Java:50) ~[mongodb-driver-core-3.0.4.jar:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.Java:58) ~[mongodb-driver-core-3.0.4.jar:na]
    ... 3 common frames omitted

Aucun de ces noms n'appartient à ma candidature. De plus, je n'ai pas de serveur MONGODB sur l'hôte local. J'utilise l'hôte distant et le configure plus tard. Une exception se produit avant l'une de mes déclarations concernant Mongo.

[~ # ~] mise à jour [~ # ~]

Il s'agit probablement de Spring fournis par des beans accédant à Mongo. Comment les désactiver?

Ma configuration contient les dépendances suivantes:

dependencies {
    compile('javax.media:jai_core:1.1.3')
    //compile('jai_core:1.1.3')

//  compile('org.springframework.boot:spring-boot-starter-data-mongodb')
    compile('org.mongodb:mongodb-driver:3.0.4')
    compile('org.mongodb:bson:3.0.4')

    compile('org.geotools:gt-api:14.2')
    compile('org.geotools:gt-shapefile:14.2')
    compile('org.geotools:gt-geometry:14.2')
    compile('org.geotools:gt-referencing:14.2')
    compile('org.geotools:gt-geojson:14.2')
    compile('org.geotools:gt-mongodb:14.2')

    compile('org.springframework.boot:spring-boot-starter-web')
    providedRuntime('org.springframework.boot:spring-boot-starter-Tomcat')
    testCompile('org.springframework.boot:spring-boot-starter-test') 
}

c'est-à-dire que j'ai supprimé org.springframework.boot:spring-boot-starter-data-mongodb et je pensais utiliser Mongo moi-même ...

MISE À JOUR2

J'ai trouvé la question connexe: Comment désactiver l'autoconfiguration de spring-data-mongodb dans spring-boot

15
Dims

Je devais ajouter une annotation d'exclusion à ma classe annotée principale,

c'est-à-dire au lieu de

@SpringBootApplication

J'aurais dû

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

Essayez d'ajouter

spring.data.mongodb.Host=hostIpOnWhichMongoIsRunning
spring.data.mongodb.port=27017

en application.properties.

Si Mongo ne fonctionne pas sur localhost, cela devrait résoudre le problème.

3
Vaibhav

Je ne peux pas dire avec certitude. C'est en quelque sorte une question d'information insuffisante.

Je peux dire que: le pilote Mongo essaie par défaut de se connecter à l'hôte local. Vous n'avez probablement pas spécifié l'hôte/port Mongo.

Vous devrez donc configurer l'hôte/le port/les informations d'identification MongoDB (si vous en avez).

Peut-être que c'est un problème lié au réseau ou un pare-feu (essayez de vous connecter à MongoDB à partir de votre machine directement avec cli/même en exécutant un programme de base qui utilise uniquement le pilote mongo).

De la stacktrace, je ne vois aucune utilisation de Spring, donc plus d'informations sont nécessaires pour dire avec certitude.

En général, vous pouvez analyser les dépendances dans Gradle en utilisant gradle dependencies commande (voir ici ).

1
Mark Bramnik

Il semble que votre serveur ne fonctionne pas. De plus, s'il fonctionne, il le fait sur un autre port.

0
rootExplorr