繁体   English   中英

JNDI InvalidNameException

[英]JNDI InvalidNameException

从活动目录服务器获取名称时,总是会出现错误。 错误如下:

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

如您所见,我同时尝试了解析器方法和复合名称方法,但是错误仍然存​​在! 我想念什么?

这是执行这些操作的代码:

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

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

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'.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM