- PR -

JNDIでのContextの使用方法について

1
投稿者投稿内容
be1300cc
ベテラン
会議室デビュー日: 2002/07/04
投稿数: 88
投稿日時: 2003-08-06 18:41
いつもお世話になっております。
be1300ccです。

前回投稿させて頂きました件につきましては、無事にデータを取得することができたました。
別件でAPIを見てもどうしても分からない点が1点ありますので質問させて頂きます。

今までは、データの取得の際にjavax.naming.directoryのDirContextを使用しておりました。
DirContext ctx = new InitialDirContext(env) ;

ですが、DirContextではなく、javax.namingのContextを使用して試して見たいのですが、
Context ctx = new InitialContext(env) ;
DirContextを使用した場合と同様の処理を記述したいのですが、これ以降のロジックの記述
の仕方がわかりません。

同様の処理をさせる場合、どのように記述すればよいのでしょうか?
ご享受お願いします。

【ldapget.java】
import javax.naming.* ;
import javax.naming.directory.* ;
import java.util.Hashtable ;

class ldapget {
public static void main(String[] args) {
Hashtable env = new Hashtable(11) ;
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory") ;
env.put(Context.PROVIDER_URL,"ldap://wintel:389/dc=jp") ;
env.put(Context.SECURITY_PRINCIPAL,"cn=Manager,dc=tec,dc=jp") ;
   env.put(Context.SECURITY_CREDENTIALS,"secret") ;

try {
// DirContext ctx = new InitialDirContext(env) ;
Context ctx = new InitialContext(env) ;

/** ↓これ以降の記述が分かりません */
Attributes attrs = ctx.getAttributes(args[0]) ;
NamingEnumeration ae = attrs.getAll() ;
while (ae.hasMore()) {
Attribute attr = (Attribute)ae.next() ;
System.out.println("attribute: " + attr.getID()) ;
NamingEnumeration e = attr.getAll() ;
while (e.hasMore()) {
System.out.println("value: " + e.next()) ;
}
}
} catch(Exception e) {
e.printStackTrace();
System.out.println("e: " + e) ;
}

}
}


be1300cc
ベテラン
会議室デビュー日: 2002/07/04
投稿数: 88
投稿日時: 2003-08-07 18:25
お世話になります。be1300ccです。
APIを見ながら、試行錯誤しながら考え、下記のように変更しました。

【DirContextの場合】
DirContext ctx = new InitialDirContext(env) ;
Attributes attrs = ctx.getAttributes(args[0]) ;
NamingEnumeration ae = attrs.getAll() ;

上記を変更。
【Contextの場合】(もしかしたらコードの記述が間違っているかもしれません)
Context initctx = new InitialContext(env) ;
Context envCtx = (Context) initctx.lookup(args[0]) ;
NamingEnumeration ae = envCtx.listBindings(args[0]) ;

1点疑問なのですが、DirContextを使用した場合は属性を取得できるのですが、
Contextを使用した場合は、通常だと属性を取得できないような気がするのですが・・・。

初歩的な質問で大変申し訳ありませんが、ご享受お願いします。


1

スキルアップ/キャリアアップ(JOB@IT)