ユーザーが LDAP データを管理できるように、Spring ベースの Web アプリケーションを実現する必要があります。LDAP への接続は、JNDI フレームワークでのみ行う必要があります (SpringLDAP は許可されません)。
このために、基本的な操作 (追加、更新、削除、一覧表示など) を実行するユーティリティ クラスを実現しました。
このクラスのコードの短いブロックを次に示します。
public class LdapUtility {
private static LdapUtility instance;
private DirContext dirContext;
public static LdapUtility getInstance() {
if(LdapUtility.instance == null)
LdapUtility.instance = new LdapUtility();
return LdapUtility.instance;
}
/**
* Connect to the LDAP
*/
private LdapUtility() {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=my-domain,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "secret");
try {
dirContext = new InitialDirContext(env);
}
catch(Exception ex) {
dirContext = null;
}
}
public void addUser(User u) {
dirContext.createSubcontext(....); //add user in the LDAP
}
}
このコードでは、 を呼び出してすべてのメソッドにアクセスできますLdapUtility.getInstance()...
が、LDAP への接続は決して解放されません。
別の方法は、各操作の前に LDAP に接続することですが、この場合、LDAP への接続が多すぎます...
だから、ここに私の質問があります:これらのメソッドにアクセスするための最もエレガントでスマートな方法は何ですか?
前もって感謝します :-)