NullPointerException при поднятии встроенного ldap-сервера с помощью Spring - PullRequest
6 голосов
/ 10 июня 2010

Я пытаюсь поднять Spring Embedded Ldap Server, используя:

Но я продолжаю получать это исключение:

2010-06-10 14:33:35,559 ERROR main ApacheDSContainer start - Server startup failed 
java.lang.NullPointerException
        at org.apache.directory.server.core.schema.DefaultSchemaService.initialize(DefaultSchemaService.java:382)
        at org.apache.directory.server.core.DefaultDirectoryService.initialize(DefaultDirectoryService.java:1425)
        at org.apache.directory.server.core.DefaultDirectoryService.startup(DefaultDirectoryService.java:907)
        at org.springframework.security.ldap.server.ApacheDSContainer.start(ApacheDSContainer.java:160)
        at org.springframework.security.ldap.server.ApacheDSContainer.afterPropertiesSet(ApacheDSContainer.java:113)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4212)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

Я использую Spring 3.0.2 и добавил следующие jar-файлы для ldap: весна-безопасность-3.0.2.RELEASE.jar LDAP весна-1.3.0.RELEASE LDAP-all.jar ApacheDS-все-1.5.6.jar разделяемый-0.9.15.jar LDAP SLF4J-апи-1.5.6.jar SLF4J-простой 1.5.6.jar

Помогите пожалуйста ....

Ответы [ 2 ]

3 голосов
/ 16 февраля 2013

@ Zorkus: Я не уверен точно, с какой проблемой вы столкнулись с Apache Directory, и какова основная причина этого, но если все, что вам нужно, это работающий встроенный Java-сервер LDAP для тестирования интеграции с Spring Security тогда вы можете рассмотреть некоторые альтернативы.

Я недавно начал искать альтернативы, потому что я не смог добиться с Apache Directory того, чего хотел, несмотря на то, что вложил много времени и усилий. (В основном я хотел скопировать схему и базу данных пользователей экземпляра Active Directory на встроенный сервер.)

Я обнаружил, что UnboundID LDAP SDK - хорошая замена. Интеграция с ним требует немного больше усилий, чем однострочная в вашем весеннем контексте (например, <security:ldap-server/>), но не намного больше. Для запуска сервера LDAP требуется всего несколько строк кода:

InMemoryDirectoryServerConfig config = 
        new InMemoryDirectoryServerConfig("dc=example, dc=com");

// schema config only necessary if the standard 
// schema provided by the library doesn't suit your needs
config.setSchema(Schema.getSchema("your-custom-schema.schema"));

// listener config only necessary if you want to make sure that the
// server listens on port 33389, otherwise a free random port will 
// be picked at runtime - which might be even better for tests btw.
config.setListenerConfigs(
        new InMemoryListenerConfig("myListener", null, 33389, null, null, null));

InMemoryDirectoryServer ds = new InMemoryDirectoryServer(config);

ds.startListening();

// import your test data from ldif files
ds.importFromLDIF(true,"content.ldif");

Единственная зависимость, которая вам понадобится для работы:

<dependency>
    <groupId>com.unboundid</groupId>
    <artifactId>unboundid-ldapsdk</artifactId>
    <version>2.3.1</version>
</dependency>

Было бы довольно легко обернуть вышеупомянутый код в класс, который вы можете создать и настроить из своего контекста Spring.

Документация и примеры кода для UnboundID LDAP SDK см .: https://www.unboundid.com/products/ldap-sdk/docs/

(Я никак не связан с UnboundID.)

1 голос
/ 15 февраля 2013

Проверьте, имеет ли состояние авторизации, используемое клиентом LDAP, доступ к схеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...