首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNDI InvalidNameException

JNDI InvalidNameException
EN

Stack Overflow用户
提问于 2012-06-15 20:28:26
回答 1查看 1K关注 0票数 0

从active directory服务器获取名称时,我总是收到错误。错误如下:

代码语言:javascript
复制
javax.naming.InvalidNameException: Invalid name: "CN=»OGMA Serviço LAN/WAN",cn=Recipients,cn=Users,,dc=intra

在用谷歌搜索了一下之后,我发现了以下信息

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4307193 http://docs.oracle.com/javase/jndi/tutorial/beyond/names/syntax.html

正如您所看到的,我尝试了解析器方法和复合名称方法,但错误仍然存在!我遗漏了什么?

下面是我完成这些操作的代码:

代码语言:javascript
复制
DirContext ctx = new InitialDirContext( (Hashtable<String,String>) env);

Name n2 = new CompositeName().add(usersContainer);
NamingEnumeration contentsEnum = ctx.list(n2);

String[] attName = {"cn"};

while ( contentsEnum.hasNext() ) {
    NameClassPair ncp = (NameClassPair) contentsEnum.next();
    NameParser ldapParser = ctx.getNameParser("");

    String name = ncp.getName() + "," + usersContainer;
    Name n = ldapParser.parse(name);

    ctx.lookup(n);

变量name"CN=»OGMA Serviço LAN/WAN" + cn=Recipients,cn=Users,,dc=intra

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-17 19:50:08

我不明白你为什么要做这么复杂的事情。如果您使用Context.listBindings()而不是Context.list(),,则可以完全避免构建名称和查找,因为您已经拥有了名称和绑定。您的代码将简化为:

代码语言:javascript
复制
NamingEnumeration<Binding> contentsEnum = ctx.listBindings(n2);

String[] attName = {"cn"};

while ( contentsEnum.hasNext() ) {
    Binding binding = contentsEnum.next();
    Object o = binding.getObject();
    // etc, whatever you were intending to do with the result of lookup(), which is now in 'o'.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11050641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档