LDAPコンテキストのディレクトリ配下全削除用コード

2005年12月7日 at 12:59 AM


JNDI/LDAPによるエントリの削除は、ディレクトリを構成する

ノードの葉(一番最下層)から順に削除しなければなりません。

つまり、子ノードを持つエントリは直接削除することができないのです。

そこで、ノードの葉から順に再起的に削除する必要があるのですが、

下記は、指定したDN配下全てのエントリを再起的に削除するための

サンプルコードになります。。

赤線で示したコードが実際にLDAPサーバから削除するコードになります。


/**
* 指定したDN以下のノードを再起的に削除する。
*
* @param ctx ディレクトリコンテキスト
* @param dn 削除対象のルートノードのDN
*/
private void deleteAll (Context ctx,String dn) {
try {
NamingEnumeration list = ctx.listBindings(dn);
//現在のDNの配下にサブコンテキストが存在するか
while (list.hasMore()) {
Binding item = (Binding)list.next();
String className = item.getClassName();
String name = item.getName();
String subdn = name + “,” + dn;
Object o = item.getObject();
if (o instanceof javax.naming.Context){
Context subctx = (Context)o;
//さらにその下にサブコンテキストが存在するか
NamingEnumeration sublist = ctx.listBindings(subdn);
if(sublist.hasMore()){
//存在する場合、再起的呼び出し
deleteAll (ctx, subdn);
}else{
//存在しない場合、コンテキストを削除
ctx.destroySubcontext(subdn);
logger.info(“DN: ” + subdn + “is deleted from LDAP”);
}
}
}
ctx.destroySubcontext(dn);
logger.info(“DN: ” + dn + “is deleted from LDAP”);
}catch (NamingException ex) {
logger.error(“Failed to delete entry on LDAP”,ex);
}
}

広告

Entry filed under: Java.

LDAP接続用コード Apache Derby DatabaseをJava Enterprise Systemへ


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2005年12月
« 11月   1月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

Twitter

  • RT @mreinhold: New release model in action: JEP 309 will not make JDK 10, so now proposed to target JDK 11: j.mp/2j93lME #jdk1015 hours ago
  • BSフジで、今TOSHIが昔のXのナンバーをXじゃない若い世代のバンドメンバーの演奏と共に歌っている。まじで懐かしい曲ばかり 2 days ago
  • 今日は所用がございまして、お先に失礼失礼大変申し訳ございませんでした。また、仙台に伺いますので、ぜひ今後ともどうぞよろしくお願いします。 twitter.com/ghustik/status… 4 days ago
  • RT @tokuhirom: Microsoft and GitHub team up to take Git virtual file system to macOS, Linux | Ars Technica #SmartNews https://t.co/D0PuHeE… 4 days ago
  • @nagise 誠に申し訳ございません!!2/3 (土)は、既に予定が入っておりました!!(T_T) 4 days ago

clustermap

ブログ統計情報

  • 1,014,554 hits

Feeds


%d人のブロガーが「いいね」をつけました。