没有用过netscape的包,都是用jndi.ldap包。
解决方案 »
- 四层架构有bean和把bean整合在action哪个比较好。
- 注释该怎么写才到位
- webServices传输数据时发生丢数据现象,本地传输也是,为什么?
- hibernate提交事务出现问题
- hibernate问题
- JavaMail 收发邮件
- 第一个ejb,出错:javax.naming.NameNotFoundException ,Converter not bound?
- 方案征集,均有分!!!
- EJB的初学问题,希望EJB的高手能给予指点,谢谢了!
- 有没有用jbuilder7+weblogic7+sqlserver2000的朋友?有一个问题请教
- weblogic环境下找不到jspsmartfile类
- 你好!请问jbuilder9里用的tomcat配置好连接池为什么不能用,我将做好的.war文件放到外面的tomcat下就能用,怎样才能让jbuilder9用连接池
类模型和属性模型的配置你们是怎么弄的呢!!!!!!郁闷..... 想不到用ldap的人那么少..郁闷呀..
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;public class ActiveDirectoryConntct1
{
public static void main(String[] args)
{
String account="user1";
String password="password1";
String root="dc=test,dc=com"; //root Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.0.1:389/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "uid=" + account + "," + root);
env.put(Context.SECURITY_CREDENTIALS, password); DirContext ctx = null;
try
{
ctx = new InitialDirContext(env);
System.out.println("认证成功");
}
catch(javax.naming.AuthenticationException e)
{
System.out.println("认证失败");
}
catch(Exception e)
{
System.out.println("认证出错:");
e.printStackTrace();
} if(ctx != null)
{
try
{
ctx.close();
}
catch (NamingException e)
{
//ignore
}
}
System.exit(0);
}
}2.查询
DirContext ctx = ...
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
//constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
NamingEnumeration en = ctx.search("", "uid=*", constraints); //查询所有用户
while (en != null && en.hasMoreElements())
{
Object obj = en.nextElement();
if(obj instanceof SearchResult)
{
SearchResult si = (SearchResult) obj;
System.out.println("name: " + si.getName());
Attributes attrs = si.getAttributes();
if (attrs == null)
{
System.out.println("No attributes");
}
else
{
for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();)
{
Attribute attr = (Attribute) ae.next();
String attrId = attr.getID();
for (Enumeration vals = attr.getAll();vals.hasMoreElements();)
{
System.out.print(attrId + ": ");
Object o = vals.nextElement();
if(o instanceof byte[])
System.out.println(new String((byte[])o));
else
System.out.println(o);
}
}
}
}
else
{
System.out.println(obj);
}
System.out.println();
}
...
ctx.close();3.添加
DirContext ctx = ...;
String newUserName = "user2";BasicAttributes attrs = new BasicAttributes();BasicAttribute objclassSet = new BasicAttribute("objectclass");
objclassSet.add("person");
objclassSet.add("top");
objclassSet.add("organizationalPerson");
objclassSet.add("inetOrgPerson");attrs.put(objclassSet);
attrs.put("sn", newUserName);
attrs.put("uid", newUserName);ctx.createSubcontext("uid=" + newUserName, attributes);
...
4.删除
String account = "user2";
DirContext ctx = ...;
ctx.destroySubcontext("uid=" + account);
5.修改
String account = "user2";
String newDisplayName = "newDisplayName";ModificationItem modificationItem[] = new ModificationItem[1];
modificationItem[0] =
new ModificationItem(
DirContext.REPLACE_ATTRIBUTE,
new BasicAttribute("displayName", newDisplayName);DirContext ctx = ...;
ctx.modifyAttributes("uid=" + account, modificationItem);