2013-11-15 19 views
8

Tôi đang sử dụng Apache Directory Studio 2.0.0ApacheDS 2.0. Sau khi tạo một phân vùng mới o=SevenSeans,dc=com, như đã nói trong http://directory.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html Tôi đang cố tạo một mục mới. Tôi chọn objectClass organizationalPerson và nhập cha mẹ o=SevenSeans,dc=com, RDN uid=Name. Sau đó, tôi nhấp vào tiếp theo và nhập giá trị của các thuộc tính cnsn. Bây giờ tôi bấm vào kết thúc và có ngoại lệ:apacheDS không thể tạo mục nhập mới

Error while creating entry 
- [LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUES 
    javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUEST 
Message ID : 19 
    Add Request : 
Entry 
    dn[n]: uid=Name,o=SevenSeans,dc=com 
    objectclass: domain 
    objectclass: top 
    objectclass: extensibleObject 
    objectclass: organizationalPerson 
    objectclass: person 
    uid: Name 
    dc: SevenSeans 
    sn: sf 
    cn: s 
: ERR_61 Entry uid=Name,o=SevenSeans,dc=com contains more than one STRUCTURAL ObjectClass: [OBJECT_CLASS (0.9.2342.19200300.100.4.13 
NAME 'domain' 
SUP 'top' 
STRUCTURAL 
MUST 'dc' 
MAY ('associatedName' $ 'o' $ 'description' $ 'businessCategory' $ 'seeAlso' $ 'searchGuide' $ 'userPassword' $ 'l' $ 'st' $ 'street' $ 'physicalDeliveryOfficeName' $ 'postalAddress' $ 'postalCode' $ 'postOfficeBox' $ 'facsimileTelephoneNumber' $ 'internationaliSDNNumber' $ 'telephoneNumber' $ 'teletexTerminalIdentifier' $ 'telexNumber' $ 'preferredDeliveryMethod' $ 'destinationIndicator' $ 'registeredAddress' $ 'x121Address') 
) 
, OBJECT_CLASS (2.5.6.7 
NAME 'organizationalPerson' 
DESC RFC2256: an organizational person 
SUP 'person' 
STRUCTURAL 
MAY ('title' $ 'x121Address' $ 'registeredAddress' $ 'destinationIndicator' $ 'preferredDeliveryMethod' $ 'telexNumber' $ 'teletexTerminalIdentifier' $ 'telephoneNumber' $ 'internationaliSDNNumber' $ 'facsimileTelephoneNumber' $ 'street' $ 'postOfficeBox' $ 'postalCode' $ 'postalAddress' $ 'physicalDeliveryOfficeName' $ 'ou' $ 'st' $ 'l') 
) 
]]; remaining name 'uid=Name,o=SevenSeans,dc=com' 
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(Unknown Source) 
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(Unknown Source) 
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(Unknown Source) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper$4.run(JNDIConnectionWrapper.java:669) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.runAndMonitor(JNDIConnectionWrapper.java:1305) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.checkConnectionAndRunAndMonitor(JNDIConnectionWrapper.java:1237) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.createEntry(JNDIConnectionWrapper.java:722) 
    at org.apache.directory.studio.ldapbrowser.core.jobs.CreateEntryRunnable.createEntry(CreateEntryRunnable.java:224) 
    at org.apache.directory.studio.ldapbrowser.core.jobs.CreateEntryRunnable.run(CreateEntryRunnable.java:124) 
    at org.apache.directory.studio.connection.ui.RunnableContextRunner$1.run(RunnableContextRunner.java:112) 
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) 

    [LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUEST 
Message ID : 19 
    Add Request : 
Entry 
    dn[n]: uid=Name,o=SevenSeans,dc=com 
    objectclass: domain 
    objectclass: top 
    objectclass: extensibleObject 
    objectclass: organizationalPerson 
    objectclass: person 
    uid: Name 
    dc: SevenSeans 
    sn: sf 
    cn: s 
: ERR_61 Entry uid=Name,o=SevenSeans,dc=com contains more than one STRUCTURAL ObjectClass: [OBJECT_CLASS (0.9.2342.19200300.100.4.13 
NAME 'domain' 
SUP 'top' 
STRUCTURAL 
MUST 'dc' 
MAY ('associatedName' $ 'o' $ 'description' $ 'businessCategory' $ 'seeAlso' $ 'searchGuide' $ 'userPassword' $ 'l' $ 'st' $ 'street' $ 'physicalDeliveryOfficeName' $ 'postalAddress' $ 'postalCode' $ 'postOfficeBox' $ 'facsimileTelephoneNumber' $ 'internationaliSDNNumber' $ 'telephoneNumber' $ 'teletexTerminalIdentifier' $ 'telexNumber' $ 'preferredDeliveryMethod' $ 'destinationIndicator' $ 'registeredAddress' $ 'x121Address') 
) 
, OBJECT_CLASS (2.5.6.7 
NAME 'organizationalPerson' 
DESC RFC2256: an organizational person 
SUP 'person' 
STRUCTURAL 
MAY ('title' $ 'x121Address' $ 'registeredAddress' $ 'destinationIndicator' $ 'preferredDeliveryMethod' $ 'telexNumber' $ 'teletexTerminalIdentifier' $ 'telephoneNumber' $ 'internationaliSDNNumber' $ 'facsimileTelephoneNumber' $ 'street' $ 'postOfficeBox' $ 'postalCode' $ 'postalAddress' $ 'physicalDeliveryOfficeName' $ 'ou' $ 'st' $ 'l') 
) 
]] 

Nếu tôi sử dụng import->LDIF và chọn captain-hook-hierarchy.ldif

Error while importing LDIF 
- [LDAP: error code 32 - NO_SUCH_OBJECT: failed for MessageType : ADD_REQUES 
javax.naming.NameNotFoundException: [LDAP: error code 32 - NO_SUCH_OBJECT: failed for MessageType : ADD_REQUEST 
Message ID : 20 
    Add Request : 
Entry 
    dn[n]: ou=people,o=sevenSeas 
    objectclass: organizationalUnit 
    objectclass: top 
    ou: people 
: ERR_268 Cannot find a partition for ou=people,o=sevenSeas]; remaining name 'ou=people,o=sevenSeas' 
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) 
    at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(Unknown Source) 
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(Unknown Source) 
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(Unknown Source) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper$4.run(JNDIConnectionWrapper.java:669) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.runAndMonitor(JNDIConnectionWrapper.java:1305) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.checkConnectionAndRunAndMonitor(JNDIConnectionWrapper.java:1237) 
    at org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper.createEntry(JNDIConnectionWrapper.java:722) 
    at org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.importLdifRecord(ImportLdifRunnable.java:464) 
    at org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.importLdif(ImportLdifRunnable.java:272) 
    at org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.run(ImportLdifRunnable.java:218) 
    at org.apache.directory.studio.connection.core.jobs.StudioConnectionJob.run(StudioConnectionJob.java:109) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 

[LDAP: error code 32 - NO_SUCH_OBJECT: failed for MessageType : ADD_REQUEST 
Message ID : 20 
    Add Request : 
Entry 
    dn[n]: ou=people,o=sevenSeas 
    objectclass: organizationalUnit 
    objectclass: top 
    ou: people 
: ERR_268 Cannot find a partition for ou=people,o=sevenSeas] 

Làm thế nào để sửa lỗi này? Bạn có thể tạo mục mới nếu tôi chọn lớp top.

+0

wow, tôi chỉ làm việc thông qua cùng một hướng dẫn. Bạn có tệp .ldif được nhập với danh sách thủy thủ không? – Sionnach733

+0

@ Sionnach733 UPD –

+0

ok, tôi đã có cùng một vấn đề, tôi sẽ đăng câu trả lời – Sionnach733

Trả lời

13

Có một số vấn đề với hướng dẫn đó (chính tả, giao diện người dùng trông khác, v.v) nhưng tôi đã quản lý để nhập dữ liệu mẫu và thêm mục nhập mới.

lỗi của bạn xảy ra vì lý do này: com contains more than one STRUCTURAL ObjectClass. điều này xảy ra vì domainorganizationalPerson đều là cấu trúc và sẽ không hoạt động cùng nhau, hãy thử xóa domain. Để biết thêm thông tin, hãy xem LDAP objectClasses

Để nhập captain-hook-hierarchy.ldif bạn cần phải tạo một phân vùng mới trước. Hướng dẫn này không phù hợp với quy ước đặt tên và là nguyên nhân gây ra lỗi của bạn. Tạo một phân vùng mới:

ID:SevenSeas 
Suffix: o=sevenSeas 

Các lỗi mà bạn nhận được là vì ,dc=com từ hướng dẫn. nếu bạn mở .ldif bạn sẽ thấy không có tham chiếu đến ,dc=com.

Tiếp theo, bỏ chọn hộp kiểm Auto-generate context entry from suffix DN. nó không tạo ra các thuộc tính thích hợp cho ví dụ. Sau đó, thêm các thuộc tính sau:

o: sevenSeas 
objectClass: top 
objectClass: organization 
description: The context entry for suffix o=sevenSeas 

Lưu tệp config.ldif và khởi động lại máy chủ. Sau đó, nhập captain-hook-hierarchy.ldif. Thư mục nên điền và thêm mục mới chỉ cần nhấp chuột phải vào một nhóm và Add new entry.

Hy vọng điều này sẽ hữu ích!

+1

TUYỆT VỜI, bạn là wizard !!! Nó thực sự làm việc, cảm ơn rất nhiều. Nhưng tôi có 1 câu hỏi: Chỉ có 'domain' và' organizationPerson' không thể làm việc cùng nhau? 'organizationPerson' và' Person' đều là cấu trúc và làm việc cùng nhau. –

+0

Tôi không phải là 100% mà đối tượng cấu trúcClass làm việc cùng nhau, tôi chỉ làm việc này ngày hôm nay, có lẽ nó có thể là một câu hỏi khác – Sionnach733

+1

[This] (http://www.zytrax.com/books/ldap/ch3/#objectclasses) giải thích các quy tắc cho objectClasses – Sionnach733

0

Tôi đã sửa hướng dẫn (http://directory.staging.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html cho bất kỳ ai muốn xem thay đổi trước khi trang web thực sự trên http://directory.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html là đúng hạn - sẽ mất một vài giờ).

Cảm ơn bạn đã báo cáo! Sẽ thuận tiện hơn khi tạo một JIRA với mô tả về các lỗi chính tả (và một bản vá thậm chí còn tốt hơn! Trang web dựa trên văn bản (markdown) và có sẵn trên http://svn.apache.org/repos/asf/directory/site/trunk/content/)

+1

Xin chào, tôi đang theo liên kết được cung cấp ở trên để tạo phân vùng mới bằng apache ldap api ..... nhưng đã thất bại cho đến nay, luôn gặp phải lỗi này .... LdapSchemaViolationException: ERR_219 Entry o = sevenseas không chứa thuộc tính entryCsn Bạn có thể giúp tôi ...... @ Emmanuel – rishiAgar

1

Tôi không thể nhận xét. ..

Sionnach733: bạn không thể có 2 ObjectClass cấu trúc trong một mục nhập, ngoại trừ nếu chúng có quan hệ thừa kế. Ví dụ, OrganizationalPerson kế thừa từ Person, vì vậy bạn có thể có cả hai trong một mục (ngay cả khi thêm OrganizationalPerson chỉ ngụ ý rằng người cũng được thêm vào ngầm trong mục nhập).

Và, vâng, những quy tắc là một chút ngu ngốc ...

Các vấn đề liên quan