Spring Embedded Server - PullRequest
       21

Spring Embedded Server

1 голос
/ 10 июня 2010

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

<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)

Есть идеи?Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 11 октября 2012

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

<security:ldap-server ldif="classpath:foo.ldif"  root="dc=example,dc=com"/>
0 голосов
/ 19 октября 2010

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

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

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

Но чтобы ответить на ваш вопрос, ошибка возникает из-за того, что вы пытаетесь добавить что-то (в данном случае OrganizationRole) в контекст, который не существует (например, «dc = example, dc = com»),Попробуйте изменить этот контекст на тот, который существует.Я не могу сказать, что это было бы, не увидев ваш файл bean-компонента Spring, но по умолчанию встроенный 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.

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

...