使用者只需熟悉 List、Map 等標準集合結構,即可完成 LDAP 增刪改查,屏蔽 JNDI 底層 API 複雜度。
DirContext 建立/關閉。package com.common.ldapconnection;
import org.apache.log4j.Logger;
public class Env {
private static final Logger log = Logger.getLogger(Env.class.getName());
// 固定參數
public String factory; // JNDI 提供者工廠類,如 com.sun.jndi.ldap.LdapCtxFactory
public String url; // LDAP 伺服器 URL,如 ldap://10.110.179.175:389
public String adminUID; // 綁定 DN,如 cn=admin,dc=example,dc=com
public String adminPWD; // 密碼
public String sslTrustStore; // SSL 信任憑證庫路徑
public String securityProtocol; // "ssl" 或 null
public String timeOut; // 連線逾時毫秒數(字串形式)
// 多重建構子支援不同場景
public Env() {}
public Env(String factory, String url, String adminUID, String adminPWD) {
this.factory = factory;
this.url = url;
this.adminUID = adminUID;
this.adminPWD = adminPWD;
}
public Env(String factory, String url, String adminUID, String adminPWD,
String sslTrustStore, String securityProtocol) {
this(factory, url, adminUID, adminPWD);
this.sslTrustStore = sslTrustStore;
this.securityProtocol = securityProtocol;
}
public Env(String factory, String url, String adminUID, String adminPWD,
String timeOut, String sslTrustStore, String securityProtocol) {
this(factory, url, adminUID, adminPWD, sslTrustStore, securityProtocol);
this.timeOut = timeOut;
}
}
sslTrustStore 與 securityProtocol 獨立,支援單向/雙向 SSL 彈性配置。timeOut 以字串儲存,避免基本型別無法表達「未設定」狀態,工廠層轉換為長整數。Env env = new Env();
env.factory = "com.sun.jndi.ldap.LdapCtxFactory";
env.url = "ldap://ldap.example.com:389";
env.adminUID = "cn=admin,dc=example,dc=com";
env.adminPWD = "secret";
// 啟用 SSL
env.securityProtocol = "ssl";
env.sslTrustStore = "/path/to/truststore.jks";
下一篇將詳細介紹 LdapConnectionFactory 連線池管理與 DirContext 生命週期控制。