2012-07-10 97 views
2

我想向目录服务器数据库添加一个条目。这些是我正在插入值:Ldap插入异常

userName=[[email protected]] 
driverEmail=[[email protected]] 
driverPassword=[ben] 
firstName=[Ben] 
lastName=[Hur] 
newsletter=[false] 

,我得到这个异常:

SEVERE: Cannot create new LDAP entry 
LDAPException(resultCode=object class violation, errorMessage='Entry mwUniqueIdentifier=5f9e7597-8a5f-42b0-985b-7d196040689e,ou=People,dc=mobilewarrio 
r,dc=com violates the Directory Server schema configuration because it includes  multiple conflicting structural objectclasses inetOrgPerson and mwUser 
Account. Only a single structural objectclass is allowed in an entry') 

谁能告诉我什么是错的。

回答

3

你并没有完全展示你如何去插入这些值,所以很难太具体。但是,这个例外很明显。

您试图分配进入两个inetOrgPerson对象类和mwUser对象类,因为它们都被定义为结构对象类,并从其他(最有可能mwUser既不继承被定义为结构性不工作对象类,因为您的架构没有将其指定为对象类AUXILIARYABSTRACT)。

RFC 4512

的物体或别名条目的特征在于,它具有一个单一的结构对象类作为最下级对象类正好一个结构对象类的超类链。

有两种可能的解决方法应该涉及到您的LDAP模式简单的更改:

1)如果你想所有mwUser对象是inetOrgPerson对象,只需声明mwUser子对象类的inetOrgPerson像这样(取自the OpenLDAP documentation):

objectclass (1.1.2.2.2 NAME 'myPerson' 
      DESC 'my person' 
      SUP inetOrgPerson 
      MUST (myUniqueName $ givenName) 
      MAY myPhoto) 

在这种情况下,你只需要到mwUser对象类分配给您的输入。

2)如果你不希望所有mwUser对象是inetOrgPerson对象,然后通过指定它是一个辅助对象类,像这样声明它一个mixin:

objectclass (1.1.2.2.1 NAME 'myPhotoObject' 
       DESC 'mixin myPhoto' 
       AUXILIARY 
       MAY myPhoto) 

在这种情况下,你将有将inetOrgPerson(或其他结构对象类)以及mwUser对象类分配给对象。