2017-04-10 5 views
2

LDAP Microsoft Active Directory 및 Domino 서버와 함께 작업 중이며 매우 새롭습니다.Domino Xpages의 모든 Microsoft Active Directory 사용자 가져 오기 Java 에이전트를 통한 NamePicker

우리는 Java Agent를 통해 Domino의 모든 Microsoft Active Directory 사용자를 성공적으로 가져 왔으며 모든 사용자 이름을 Java 디버그 콘솔에 인쇄했습니다. 이것에 관해서는 http://lotus-blogs.blogspot.in/2009/08/ldap-programming-using-domino-java-step.html 링크를 참조하십시오.

이제 Domino Xpages NamePicker의 모든 사용자를 얻으려고합니다. 그러면 Java Agent를 통해 Xpages NamePicker의 모든 사용자를 가져올 수 있습니까?

우리는 Xpages NamePicker에서 java beans를 사용하여 Domino 사용자를 가져올 수 있음을 확인했습니다.

어떤 종류의 제안이라도 정말 감사하겠습니다.

내 자바 에이전트는 다음과 같은 -

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 
} 
} 
+0

코드를 사용해 보셨습니까? 문제가 생겼니? 그렇다면 무엇입니까? –

+0

우리는 자바 디버그 콘솔에있는 모든 사용자 이름을 인쇄했고 필요한 모든 사용자 이름이 제대로 인쇄되도록 코드를 실행했다. 하지만 문제는 이러한 이름을 이름 선택기로 가져 오는 것입니다. 이름 선택 도구는 bean 옵션 만 가지고 있지만 우리의 경우에는 이름을 제공하는 Java 에이전트입니다. –

답변

0

OK처럼, 그것을 얻었다.

진정한 빈을 사용하는 것과는 대조적으로 에이전트를 이용하는 특별한 이유는 무엇입니까? 내 의견으로는 누군가가 이름 선택기를 열 때마다 상담원을 호출하는 것은 효과가 없다.

이외에도 상담원의 결과를 이름 선택기로 직접 전달할 수있는 방법이 표시되지 않습니다.

세 번째 : LDAP 필터를 보면 코드가 수백 또는 수천 개의 이름을 반환 할 것이라고 확신합니다. 표준 ExtLib NamePicker를 사용하는 것은 사용자에게 즐거움이 아닙니다. 대화 페이지별로 표시되는 이름 목록이 너무 제한적입니다. 그러나 그것은 다른 이야기일지도 모른다. 다음

  • 고려 컨트롤에 결과를 먹이

    1. 은 자바 빈즈로 자바 에이전트를 리팩토링 다음 namePicker 접근 방식에 집착

      당신이 달성하기 위해 무엇을 표시 달성 할 수있는 방법은 여러 가지가 있습니다 IBM TDI와 같은 디렉토리 동기화 도구를 사용합니다. 따라서 귀하의 광고 데이터를 원하는 Domino 디렉토리로 푸시 한 다음 애플리케이션에서 표준 이름 조회 기능을 활용할 수 있습니다.