2010-06-10 3 views
1

Я использую весной 3.0.2 и 1.5.5 ApacheDS, и я пытаюсь запустить встроенный сервер с помощью:Spring Embedded Server

<ldap-server ldif="classpath:conf/users.ldif" port="39999"/> 

Содержание файла user.s.ldif является:

dn: cn=The Postmaster,dc=example,dc=com 
objectClass: organizationalRole 
cn: The Postmaster 

Но я всегда получаю эту ошибку:

16566 [main] INFO org.apache.directory.server.protocol.shared.store. LdifFileLoader - Could not create entry ClientEntry 
dn: cn=The Postmaster,dc=example,dc=com 
objectclass: organizationalRole 
cn: The Postmaster 

org.apache.directory.shared.ldap.exception.LdapNam eNotFoundException: Cannot find a partition for 2.5.4.3=the postmaster,0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com 
at org.apache.directory.server.core.partition.DefaultPartitionNexus.getPartition(DefaultPartitionNexus. java:1082) 
at org.apache.directory.server.core.partition.DefaultPartitionNexus.hasEntry(DefaultPartitionNexus.java :1037) 
at org.apache.directory.server.core.interceptor.InterceptorChain$1.hasEntry(InterceptorChain.java:167) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.hasEntry(InterceptorChain.java :1300) 
at org.apache.directory.server.core.interceptor.BaseInterceptor.hasEntry(BaseInterceptor.java:159) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.hasEntry(InterceptorChain.java :1300) 
at org.apache.directory.server.core.interceptor.BaseInterceptor.hasEntry(BaseInterceptor.java:159) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.hasEntry(InterceptorChain.java :1300) 
at org.apache.directory.server.core.exception.ExceptionInterceptor.add(ExceptionInterceptor.java:154) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196) 
at org.apache.directory.server.core.referral.ReferralInterceptor.add(ReferralInterceptor.java:251) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196) 
at org.apache.directory.server.core.authn.AuthenticationInterceptor.add(AuthenticationInterceptor.java: 212) 
at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1196) 
at org.apache.directory.server.core.normalization.NormalizationInterceptor.add(NormalizationInterceptor .java:126) 
at org.apache.directory.server.core.interceptor.InterceptorChain.add(InterceptorChain.java:756) 
at org.apache.directory.server.core.DefaultOperationManager.add(DefaultOperationManager.java:260) 
at org.apache.directory.server.core.DefaultCoreSession.add(DefaultCoreSession.java:145) 
at org.apache.directory.server.core.DefaultCoreSession.add(DefaultCoreSession.java:122) 
at org.apache.directory.server.protocol.shared.store.LdifFileLoader.execute(LdifFileLoader.java:204) 
at org.springframework.security.ldap.server.ApacheDSContainer.importLdifs(ApacheDSContainer.java:237) 
at org.springframework.security.ldap.server.ApacheDSContainer.start(ApacheDSContainer.java:189) 

Любые идеи? Спасибо заранее!

ответ

0

Во-первых, я полагаю, ваш файл LDIF фактически разделен на несколько строк, как показано ниже:

dn: cn=The Postmaster,dc=example,dc=com 
objectClass: organizationalRole 
cn: The Postmaster 

... в противном случае вы бы даже не получать, насколько вы.

Но, чтобы ответить на ваш вопрос, ошибка возникает из-за того, что вы пытаетесь добавить что-то (в данном случае AdministrativeRole) в контекст, который не существует (т. Е. «Dc = example, dc = com»). Попробуйте изменить этот контекст на тот, который существует. Я не могу сказать, что это было бы без просмотра вашего файла Spring bean, но по умолчанию встроенный LDAP-сервер Spring использует корень «dc = springframework, dc = org», поэтому попробуйте изменить файл LDIF на это:

dn: cn=The Postmaster,dc=springframework,dc=org 
objectClass: organizationalRole 
cn: The Postmaster 

Я тестировал это с помощью Spring 3.0.3.RELEASE и ApacheDS 1.5.5.

P.S. при отправке в StackOverflow, отформатируйте свой код, трассировку стека, тестовые данные и т. д. в виде кода (например, в режиме редактирования, выделите соответствующий текст и нажмите кнопку «Пример кода»). Это делает ваш пост более читабельным, и поэтому люди, скорее всего, помогут вам.

6

У меня возникла такая же проблема. Решение заключалось в том, чтобы добавить правильный контекст как «root» -Атрибут тега ldap-сервера в Spring Security. В вашем случае:

<security:ldap-server ldif="classpath:foo.ldif" root="dc=example,dc=com"/> 
Смежные вопросы