错误信息...
重要的是错误信息,不是你的源程序 ! :) ------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
重要的是错误信息,不是你的源程序 ! :) ------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
import javax.naming.directory.*;
import java.util.Hashtable;
import java.util.Enumeration;public class Finder{
public static void printAttrs(Attributes attrs)throws NamingException{
if(attrs==null){
System.out.println("No Attributes:");
}
else{
for(NamingEnumeration ne=attrs.getAll();ne.hasMoreElements();){
Attribute attribute=(Attribute)ne.next();
String id=attribute.getID();
for(Enumeration vals=attribute.getAll();vals.hasMoreElements();){
System.out.println(id+":"+vals.nextElement());
}
}
}
}
public static void main(String args[]){
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://10.1.0.18:389/dc=siroe,dc=com");
DirContext ctx = new InitialDirContext(env);
Attributes matchAttrs=new BasicAttributes(true);
matchAttrs.put(new BasicAttribute("sn","Doe"));
matchAttrs.put(new BasicAttribute("mail"));
//SearchControls ctls = new SearchControls();
//String filter = "(&(ou=Accounting)(mail=*))";
NamingEnumeration answer=ctx.search("ou=People",matchAttrs);
while(answer.hasMore()){
SearchResult sr=(SearchResult)answer.next();
System.out.println(">>>"+sr.getName());
printAttrs(sr.getAttributes());
}
}catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
这是我的一个完整的程序。
首先,你自己的机器上有没有安装目录服务器,我看你的URL
"ldap://aaa.sohu.com:389/dc=aaa.sohu,dc=com",aaa.sohu.com这是你的主机名吗?
如果你只做搜索,没有增删改的话,下面三条就不要了:
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Directory Manager");
env.put(Context.SECURITY_CREDENTIALS, "password");
cansin() 师兄:我自己的机器上没有安装目录服务器,但是目录服务器在的位置为 E450.NEC.COM我是应该这么写吗???
"ldap://192.168.17.65:389/dc=e450.nec,dc=com");javax.naming.CommunicationException: 192.168.17.65:389. Root exception is java.
net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:350)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:137)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:124)
at java.net.Socket.<init>(Socket.java:268)
at java.net.Socket.<init>(Socket.java:95)
at com.sun.jndi.ldap.Connection.<init>(Connection.java:198)
at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:108)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2379)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:239)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.jav
a:74)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
60)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:241
)
at javax.naming.InitialContext.init(InitialContext.java:217)
at javax.naming.InitialContext.<init>(InitialContext.java:193)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.jav
a:78)
at Finder.main(Finder.java:29)
Press any key to continue...
些错了,刚才ip写错了
这个报错是将
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Directory Manager");
env.put(Context.SECURITY_CREDENTIALS, "password");
加上后报错的,我肯定是要进行数据变动的,请问如何变动》?为什么报错????
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials
]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2731)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2677)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2478)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2395)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:239)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.jav
a:74)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
60)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:241
)
at javax.naming.InitialContext.init(InitialContext.java:217)
at javax.naming.InitialContext.<init>(InitialContext.java:193)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.jav
a:78)
at Finder.main(Finder.java:34)
Press any key to continue...
还有,people我这里有的,为什么不好使?
谢谢了
dc=siroe,dc=com
|
|
------------------------
| |
ou=people ou=groups
|
----------------
| ......... |
uid=jdoe .........
env.put(Context.SECURITY_AUTHENTICATION, "none");
不知别人是否开了匿名。
--------------------------------------------------
Simple Authentication
// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=yourcn");
env.put(Context.SECURITY_CREDENTIALS, "yourpassword");
密码,如何写入程序里面,并且获得对ldap的操作的权利