基于Java連接數據庫
更新時間 2023-12-27 15:52:28
最近更新時間: 2023-12-27 15:52:28
分享文章
本頁介紹了使用Java如何連接文檔數據庫服務。
使用SSL證書連接
-
您可以在“實例管理”頁面,單擊實例名稱進入“基本新消息”頁面,確認開啟了SSL后,單擊“實例信息”模塊“SSL”處的,下載證書。
-
通過Java連接文檔數據庫服務,代碼中的Java鏈接格式如下:
- 連接到單節點:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true - 連接到副本集:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>authSource=admin&replicaSet=replica&ssl=true - 連接到集群:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true
參數 說明 username 當前用戶名。 password 當前用戶的密碼。 instance_ip 如果通過彈性云服務器連接,“instance_ip”是主機IP,即“基本信息”頁面該實例的“內網地址”。 如果通過連接了公網的設備訪問,“instance_ip”為該實例已綁定的“彈性公網IP”。 instance_port 端口,默認8030,當前端口,參考“基本信息”頁面該實例的“數據庫端口”。 database_name 數據庫名,即需要連接的數據庫名。 authSource 鑒權用戶數據庫,取值為admin。 ssl 連接模式,值為true代表是使用ssl連接模式。 - 連接到單節點:
-
連接文檔數據庫服務的Java代碼,可參考以下示例:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
?
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
?
public class MongoDBSSLExample {
? ?public static void main(String[] args) throws Exception {
? ? ? ?//用戶名
? ? ? ?String username = "";
? ? ? ?//數據庫
? ? ? ?String databaseName = "";
? ? ? ?//密碼
? ? ? ?String password = "";
? ? ? ?//證書路徑
? ? ? ?String certPath = "";
? ? ? ?//連接地址
? ? ? ?String host = "";
? ? ? ?//端口
? ? ? ?int port = 8030;
? ? ? ?// 創建MongoCredential對象
? ? ? ?MongoCredential credential = MongoCredential.createCredential(username, databaseName, password.toCharArray());
? ? ? ?// 加載證書
? ? ? ?CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
? ? ? ?X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(new FileInputStream(certPath));
? ? ? ?// 創建SSL上下文
? ? ? ?SSLContext sslContext = SSLContext.getInstance("TLS");
? ? ? ?KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
? ? ? ?keyStore.load(null, null);
? ? ? ?keyStore.setCertificateEntry("mongodb-cert", certificate);
? ? ? ?TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
? ? ? ?trustManagerFactory.init(keyStore);
? ? ? ?sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
?
? ? ? ?// 創建MongoClient實例
? ? ? ?MongoClientOptions options = MongoClientOptions.builder()
? ? ? ? ? ? ? .sslEnabled(true)
? ? ? ? ? ? ? .sslInvalidHostNameAllowed(true)
? ? ? ? ? ? ? .sslContext(sslContext)
? ? ? ? ? ? ? .build();
? ? ? ?MongoClient mongoClient = new MongoClient(new ServerAddress(host, port), credential, options);
? }
}
無證書連接
- 通過Java連接文檔數據庫服務實例,代碼中的Java鏈接格式如下:
- 連接到單節點:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin - 連接到副本集:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&replicaSet=replica - 連接到集群:
mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin
- 連接到單節點:
- 參考代碼如下:
import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; ? public class MongoDBExample { ? ?public static void main(String[] args) { ? ? ? ?//用戶名 ? ? ? ?String username = ""; ? ? ? ?//數據庫 ? ? ? ?String databaseName = ""; ? ? ? ?//密碼 ? ? ? ?String password = ""; ? ? ? ?//連接地址 ? ? ? ?String host = ""; ? ? ? ?//端口 ? ? ? ?int port = 8030; ? ? ? ?// 創建MongoCredential對象 ? ? ? ?MongoCredential credential = MongoCredential.createCredential(username, databaseName, password.toCharArray()); ? ? ? ?// 創建MongoClientOptions對象 ? ? ? ?MongoClientOptions options = MongoClientOptions.builder() ? ? ? ? ? ? ? .retryWrites(true) ? ? ? ? ? ? ? .build(); ? ? ? ?// 創建MongoClient實例 ? ? ? ?MongoClient mongoClient = new MongoClient(new ServerAddress(host, port), credential, options); ? } }