2013-12-17 121 views
0

我想創建複雜的partitition與Apache DS與Apache DS

 Dn dnApache = new Dn("ou=test,dc=Apache,dc=org"); 
     Entry entryApache = service.newEntry(dnApache); 
     entryApache.add("objectClass", "top", "domain", "extensibleObject"); 
     entryApache.add("dc", "Apache"); 
     service.getAdminSession().add(entryApache); 

它的工作很好,我沒有問題創建新的分區。但是,當我試圖創建更復雜的分區,就像這樣:

 Dn dnApache = new Dn("ou=test,dc=Apache,dc=org"); 
     Entry entryApache = service.newEntry(dnApache); 
     entryApache.add("objectClass", "top", "domain", "extensibleObject"); 
     entryApache.add("dc", "Apache"); 
     service.getAdminSession().add(entryApache); 

     Dn serviceDN = new Dn("ou=service,ou=test,dc=Apache,dc=org"); 
     Entry serviceEntry = service.newEntry(serviceDN); 
     entryApache.add("objectClass", "top", "organizationalUnit"); 
     entryApache.add("dc", "Service"); 
     service.getAdminSession().add(serviceEntry); 

我有一個這樣的例外:

org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException: ERR_60 Entry ou=service,ou=test,dc=Apache,dc=org does not contain a STRUCTURAL ObjectClass 
    at org.apache.directory.server.core.schema.SchemaInterceptor.assertObjectClasses(SchemaInterceptor.java:1493) 
    at org.apache.directory.server.core.schema.SchemaInterceptor.check(SchemaInterceptor.java:951) 
    at org.apache.directory.server.core.schema.SchemaInterceptor.add(SchemaInterceptor.java:1045) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.exception.ExceptionInterceptor.add(ExceptionInterceptor.java:188) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.admin.AdministrativePointInterceptor.add(AdministrativePointInterceptor.java:1201) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.authz.AciAuthorizationInterceptor.add(AciAuthorizationInterceptor.java:516) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.referral.ReferralInterceptor.add(ReferralInterceptor.java:249) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.authn.AuthenticationInterceptor.add(AuthenticationInterceptor.java:335) 
    at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:416) 
    at org.apache.directory.server.core.normalization.NormalizationInterceptor.add(NormalizationInterceptor.java:127) 
    at org.apache.directory.server.core.DefaultOperationManager.add(DefaultOperationManager.java:394) 
    at org.apache.directory.server.core.shared.DefaultCoreSession.add(DefaultCoreSession.java:193) 
    at org.apache.directory.server.core.shared.DefaultCoreSession.add(DefaultCoreSession.java:170) 
    at EmbeddedADSVerTrunk.initDirectoryService(EmbeddedADSVerTrunk.java:218) 
    at EmbeddedADSVerTrunk.<init>(EmbeddedADSVerTrunk.java:234) 
    at EmbeddedADSVerTrunk.main(EmbeddedADSVerTrunk.java:264) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

你能幫幫我嗎?

Exception in this line: service.getAdminSession().add(serviceEntry); 
+0

***規則0 ***始終張貼_complete_堆棧跟蹤; ***規則1 ***確定拋出異常的代碼行。 –

+0

固定。請看看它。 –

回答

0

修正了這樣的方式:

Partition testPartition = addPartition("test", "ou=test,dc=apache,dc=org"); 
    Partition servicePartition = addPartition("service", "ou=service,ou=test,dc=apache,dc=org"); 


    addIndex(infopulsePartition, "objectClass", "ou", "uid"); 
    addIndex(servicePartition, "objectClass", "ou", "uid"); 

    service.startup(); 

    if (!service.getAdminSession().exists(infopulsePartition.getSuffixDn())) { 
     Dn dnApache = new Dn("ou=test,dc=apache,dc=org"); 
     Entry entryApache = service.newEntry(dnApache); 
     entryApache.add("objectClass", "top", "domain", "extensibleObject"); 
     entryApache.add("dc", "Apache"); 
     service.getAdminSession().add(entryApache); 
    } 

    if (!service.getAdminSession().exists(servicePartition.getSuffixDn())) { 
     Dn dnApache = new Dn("ou=service,ou=test,dc=apache,dc=org"); 
     Entry entryApache = service.newEntry(dnApache); 
     entryApache.add("objectClass", "top", "domain", "extensibleObject"); 
     entryApache.add("dc", "Apache"); 
     service.getAdminSession().add(entryApache); 
    }