文档数据库服务

Java 示例

2025-06-19 09:39:15

通过Java连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。文档数据库服务新实例默认关闭SSL数据加密。SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗。

  • 参数说明

参数

说明

username

当前用户名。

password

当前用户的密码。

instance_ip

如果通过弹性云服务器连接,“instance_ip”是主机IP,即“基本信息”页面该实例的“内网地址”。如果通过连接了公网的设备访问,“instance_ip”为该实例已绑定的“弹性公网IP”。如果需要配置高可用地址,即“基本信息”页面该实例的“数据库连接”。

instance_port

端口,默认8030,集群默认9030。当前端口,参考“基本信息”页面该实例的“数据库端口”。

database_name

数据库名,即需要连接的数据库名。

authSource

鉴权用户数据库,取值为admin。

ssl

连接模式,值为true代表是使用ssl连接模式。

  • Maven 配置


<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.10</version>
    </dependency>
</dependencies>
  • 无证书链接

public class Connector {
    public static void main(String[] args) {
        try {
            ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin");
            MongoClientSettings settings = MongoClientSettings.builder()
                    .applyConnectionString(connString)
                    .retryWrites(true)
                    .build();
            MongoClient mongoClient = MongoClients.create(settings);
            MongoDatabase database = mongoClient.getDatabase("admin");  
            BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
            Document commandResult = database.runCommand(command);
            System.out.println("Connect to database successfully");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Connect failed");
        }
    }
}
  • 使用SSL证书连接

使用keytool工具配置CA证书:

keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>

在程序中设置JVM 系统属性以指向正确的信任库和密钥库:

System.setProperty("javax.net.ssl.trustStore","<path to trust store>");
System.setProperty("javax.net.ssl.trustStorePassword","<password>");

Java Code:

public class Connector {
    public static void main(String[] args) {
        try {
            System.setProperty("javax.net.ssl.trustStore", "./conf/certs.keystore");
            System.setProperty("javax.net.ssl.trustStorePassword", "password");
            ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true");
            MongoClientSettings settings = MongoClientSettings.builder()
                    .applyConnectionString(connString)
                    .applyToSslSettings(builder -> builder.enabled(true))
                    .applyToSslSettings(builder -> builder.invalidHostNameAllowed(true))
                    .build();
            MongoClient mongoClient = MongoClients.create(settings);
            MongoDatabase database = mongoClient.getDatabase("admin");
            BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
            Document commandResult = database.runCommand(command);
            System.out.println("Connect to database successfully");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Connect failed");
        }
    }
}


J4ypi8G5HTZl