我正在使用LDAP Microsoft Active Directory和Domino服務器,並且對此很新。通過Java代理獲取Domino Xpages NamePicker中的所有Microsoft Active Directory用戶
我們已經通過Java代理成功提取Domino中的所有Microsoft Active Directory用戶,並在java調試控制檯中打印了所有用戶名。對於這個提到這個http://lotus-blogs.blogspot.in/2009/08/ldap-programming-using-domino-java-step.html鏈接。
現在,我想要獲得Domino Xpages NamePicker中的所有用戶,那麼是否有可能通過java代理獲取Xpages NamePicker中的所有用戶?
正如我們在Xpages NamePicker中看到的那樣,我們可以藉助java bean來獲取Domino用戶。
任何類型的建議將真正讚賞。
我的Java代理是以下各項
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
LDAPQuery.ldapconnect();
} catch(Exception e) {
e.printStackTrace();
}
}
}
和
import javax.naming.*;
import javax.naming.directory.*;
import java.util.*;
public class LDAPQuery {
public static void ldapconnect(){
String isFound="0";
try {
System.out.println("inside try 1");
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "PROVIDER_URL");
env.put(Context.SECURITY_PRINCIPAL, "UserName");
env.put(Context.SECURITY_CREDENTIALS, "password");
// Create initial context
DirContext ctx = new InitialDirContext(env);
// Specify the ids of the attributes to return
String[] attrIDs = {"cn","mail"};
SearchControls ctls = new SearchControls();
ctls.setReturningAttributes(attrIDs);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectCategory=person)(mail=*abc.com))";
System.out.println("filter defined");
// Search for objects that have those matching attributes
NamingEnumeration answer = ctx.search("", filter,ctls);
System.out.println("get the answer!");
try {
System.out.println("inside try2");
while (answer.hasMore())
{
SearchResult sr = (SearchResult)answer.next();
System.out.println("<<" + sr.getName()+">>");
Attributes attrs = sr.getAttributes();
//System.out.println(sr.getName().matches("/^[0-9]/"));
System.out.println(attrs.get("cn").get());
System.out.println(attrs.get("mail").get());
isFound="1";
}
if (isFound=="1") {
System.out.println("User found in Active Directory!");
} else {
System.out.println("Opps ! User not found in Active Directory!");
}
answer.close();
}catch(PartialResultException e) {
System.out.println("catch 2");
e.printStackTrace();
}
// Close the context when we're done
ctx.close();
} catch (Exception e) {
System.out.println("catch 1");
e.printStackTrace();
}
}
public LDAPQuery() {
// Don't think I'm doing anything here
}
}
您是否試過您的代碼?你遇到問題了嗎?如果是這樣,他們是什麼? –
我們已經運行了代碼,我們已經在java調試控制檯中打印了所有的用戶名,所有的用戶名都根據需要正確打印。但問題是要將這些名稱命名爲選擇器。因爲名字選擇器只有bean選項,但在我們的例子中,它是提供名稱的Java代理。 –