1

ネットワーク接続に問題があります。

これが状況です。

Javaアプリケーション(JSPまたはコンソール)はMongoDBとRedisに接続する必要があります。

最初の環境では、

  • Java->ローカルmongodb:OK
  • Java->リモートmongodb:OK
  • Java->リモートredis:OK

問題のある(より安全な)2番目の環境では、

  • Java->ローカルmongodb:OK
  • Java->リモートmongodb:例外
  • Java->リモートredis:例外

面白いことに、mongo.exe(コンソール)は問題なくリモートのmongodbに接続します。(私はredisでテストしていません)

最新バージョンのJavaをアップグレードしました。テスト用にJSPバージョンをJavaコンソールに変換しました。そして、いくつかのコードを変更しました。何も機能しません。

m = new MongoDB( ADDRESS, PORT );
m.setReadPreference( ReadPreference.SECONDARY );
DB db = m.getDB("test");
db.authenticate( ID, PASS.toCharArray() ); //!< exception

MongoDB例外メッセージ

DBPortPool gotError
Warning: emptying DBPortPool to [ADDRESS...]:27017 b/c of error
java.io.IOException: couldn't connect to [/[ADDRESS...]:27017]     bc:java.net.SocketException: Permission denied: connect

Redis例外メッセージ

JedisConnectionException: java.net.SocketException: Permission denied: connect

いくつかのセキュリティ問題が関係していると思います。2台目のPCは非常に厳格なセキュリティネットワークにあります。(私はVPN経由でそれらを使用します)

4

2 に答える 2

1

自問自答。これは、JDK7 と VPN に関連する問題です。 http://www.java.net/node/703177

于 2012-07-04T13:23:57.043 に答える
0

リモート ホストとリッスン ポートに telnet で接続できますか (リモート コンピューターが telnet の試行を完全にブロックしていない場合)。mongoコンソールが最初のコンピューターから2番目のコンピューターに接続できたと述べたので、リモートIPアドレス/ポート番号について確信があると思います。これがネットワークの問題であることを本当に誰かに示す必要がある場合は、両方のコンピューターでwiresharkなどを使用することを検討できます-最初のコンピューターを離れたパケットが2番目のコンピューターから拒否されるのを見ることができます.

于 2012-06-26T15:53:03.303 に答える