public static DB getMongoDB() {
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
//build the connection options
builder.maxConnectionIdleTime(60000);//set the max wait time in (ms)
MongoClientOptions opts = builder.build();
char[] password2 = "mypassword".toCharArray();
MongoCredential credential2 = MongoCredential.createCredential("username", "databasename",password2);
//add your option to the connection
MongoClient mongoClient = new MongoClient(new ServerAddress("server ip",27017), Arrays.asList(credential2),opts);
//use your database
cachedDb = mongoClient.getDB("databasename");
return cachedDb;
}
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
//build the connection options
builder.maxConnectionIdleTime(86400000);//set the max wait time in (ms)
MongoClientOptions opts = builder.build();
final Morphia morphia = new Morphia();
morphia.mapPackage("com.java.code");
final String hostURL = "host_url";
MongoCredential credential = MongoCredential.createCredential("username","database","Password".toCharArray());
ServerAddress address = new ServerAddress(hostURL);
List<MongoCredential> credentialList = new ArrayList<>();
credentialList.add(credential);
final MongoClient client = new MongoClient(address,credentialList,opts);
// create the Datastore connecting to the default port on the local host
datastore = morphia.createDatastore(client,"datastore");
7条答案
按热度按时间nafvub8i1#
我在一些文档中找到了它:
对于长时间运行的应用程序,通常谨慎的做法是以毫秒数启用“keepAlive”。如果没有它,一段时间后,您可能会开始看到“连接关闭”错误,似乎没有理由。
看看这是否有帮助。当你连接到mongoDB时,你可以向它传递socket选项。我来自节点背景,我们使用以下选项来保持它的活力。
希望这有帮助!!
d8tt03nd2#
我通过将sslEnabled设置为true来解决这个问题,代码示例:
补充:我的客户端jar是org。mongodb.mongodb-driver 3.6.4,服务器为mongodb atlas M0 3.6.6 GCP
pgvzfuti3#
我同意Rhangaun的回答,这里是我的Java代码解决方案:
以下是我的研究链接:http://3t.io/blog/how-to-prevent-your-connection-from-dropping-with-hosted-mongodb-instances/
希望对你有帮助。
deikduxw4#
这在spring Boot 和基于云的mongo(Atlas集群示例)中适用。
编辑 www.example.com 像这样:
对于常规mongo示例(非集群),请使用以下内容:
hts6caw35#
对我来说,这是一个完全不同的问题-我正在使用mongo-java-server与Fongo,并最终得到这个错误。结果是old versions of it are not compatible with
FieldType.DECIMAL128
conversions。更新到最新版本(1.36.0目前)为我解决了这个问题。
ej83mcc06#
问题是Mongodb结束了连接。你需要增加Mongodb驱动程序的超时时间这里是一个示例代码。
8gsdolmq7#
我走了两步就修好了。
第一个:
准备适当的MongoClientSettings对象,其中包含Mongo客户端的密钥设置。
第二个:
增加www. example中的默认超时 www.example.com / application.yaml文件(或您已经拥有的文件)
检查一下,应该能用:)