2010-05-07 2 views
2

다음 코드를 사용하여 LDAP에 속성을 만들었습니다.ldap 사용자에게 자체 정의 된 속성을 추가하는 방법은 무엇입니까?

attrs.put("NUMERICOID", "1.3.6.1.4.1.42.2.27.4.2.3.1.1.9"); 
      attrs.put("NAME", "myattribute"); 
      attrs.put("DESC", "for JNDITutorial example only"); 
      attrs.put("SYNTAX", "1.3.6.1.4.1.1466.115.121.1.15"); 
      DirContext schema = context.getSchema(""); 
      DirContext newAttr = schema.createSubcontext ("AttributeDefinition/myattribute1", attrs); 

이 속성이 성공적으로 생성, 는 지금은 "USER1"(UID)를 말하는 사용자에게이 속성을 추가하려합니다.

Attributes attributeslist = context.getAttributes(ld.getUserDN(username)); 
      attributeslist.put("myattribute1", ""); 
      context.modifyAttributes(ld.getUserDN("test5"), DirContext.REPLACE_ATTRIBUTE, attributeslist); 

하지만 개체 클래스 위반 오류가 발생합니다.

누구든지 해결할 수 있습니까? Java 코드를 사용하여 사용자에게 정의 된 속성을 추가해야합니다.

답변

0

속성을 만든 다음 속할 클래스를 선택하고 클래스를 업데이트합니다.

기본 클래스 (LDAP 서버 기본 스키마와 함께 제공), 유효한 클래스 (inetOrgPerson과 같이 고유 한 클래스, inetOrgPerson과 같은 클래스) 또는 보조 클래스 (이 클래스의 객체를 만들 수 없습니다. 다른 객체 클래스를 확장합니다.

새 속성을 '보유'하는 aux 클래스를 정의한 다음 클래스 이름과 함께 대상 객체의 객체 클래스에 항목을 추가 한 다음 속성을 사용자에게 추가 할 수 있습니다.

우리는 항상이 작업을 수행합니다.

+0

안녕하세요 geoffc, 우선 귀하의 도움에 감사드립니다. 난 perticular 스키마 개체에 추가에 여전히 문제가 얼굴. 아래 코드를 사용하여 DirContext personSchema = (DirContext) schema.lookup ("ClassDefinition/inetOrgPerson"); attributeslist.put ("myattribute3", "test"); personSchema.modifyAttributes (ld.getUserDN ("test5"), DirContext.ADD_ATTRIBUTE, attributeslist); 하지만 "이름을 찾을 수 없습니다 예외"가 나타납니다. 거기도 "createSubcontext"메서드로 시도한 경우에도 동일한 오류가 발생합니다. 이 문제를 해결하도록 도와 주시겠습니까? –

+0

이것은 흥미 롭습니다. 스키마에서 코드를 확장하고 있습니까? 보통이 작업은 설치시 가져온 LDIF 파일을 통해 수행됩니다. – geoffc

관련 문제