web-dev-qa-db-ja.com

Java

MongoDBのJava appを実行すると、次の例外が発生します。

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

呼び出しスタックは次のとおりです。

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

これらの名前はどちらも私のアプリケーションに属していません。また、ローカルホストにはMONGODBサーバーがありません。リモートホストを使用していて、後で設定しています。 Mongoに関する私の発言の前に例外が発生します。

[〜#〜]更新[〜#〜]

これはおそらくSpringにアクセスするMongo提供のBeanの一部です。それらを無効にする方法は?

私の設定には次の依存関係が含まれています:

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') 
}

つまり、org.springframework.boot:spring-boot-starter-data-mongodbを削除し、Mongoを自分で使用することを考えていました...

UPDATE2

私は関連する質問を見つけました: spring-bootでspring-data-mongodb自動構成を無効にする方法

15
Dims

メインの注釈付きクラスに除外注釈を追加することでしたが、

つまり、代わりに

@SpringBootApplication

私が持っている必要があります

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

追加してみてください

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

application.propertiesに挿入します。

Mongoがlocalhostで実行されていない場合は、これで問題が解決するはずです。

3
Vaibhav

確かには言えない。それは、情報の質問としては十分ではありません。

私はそれを言うことができます:デフォルトでMongoドライバーはローカルホストに接続しようとします。おそらく、Mongoホスト/ポートを指定していません。

したがって、MongoDBのホスト/ポート/資格情報(ある場合)を構成する必要があります。

多分それはネットワーク関連の問題またはファイアウォールです(あなたのマシンから直接cliを使用してMongoDBに接続してみてください/ mongoドライバーのみを使用する基本的なプログラムを実行している場合でも)。

スタックトレースからは、Springの使用法が見当たらないので、確かに言うにはより多くの情報が必要です。

一般に、gradle dependenciesコマンドを使用して、Gradleの依存関係を分析できます( ここ を参照)。

1
Mark Bramnik

サーバーが実行されていないようです。また、実行中の場合は、別のポートで実行しています。

0
rootExplorr