2010-06-10 26 views
6

Tôi đang cố gắng để nâng cao mùa xuân Embedded Ldap Server sử dụng: NullPointerException trong khi huy động một máy chủ ldap nhúng sử dụng lò xo

Nhưng tôi tiếp tục nhận được ngoại lệ này:

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) 

Tôi sử dụng spring 3.0.2 và thêm các lọ sau cho ldap: spring-security-ldap-3.0.2.RELEASE.jar spring-ldap-1.3.0.RELEASE-all.jar apacheds-all-1.5.6 .jar shared-ldap-0.9.15.jar slf4j-api-1.5.6.jar slf4j-đơn giản-1.5.6.jar

Trợ giúp xin vui lòng ....

+0

Tôi tin rằng debugger là bạn thân nhất của mình tại đây .. – Espen

Trả lời

1

Kiểm tra xem tình trạng cấp phép sử dụng bởi các khách hàng LDAP có quyền truy cập vào giản đồ.

3

@ Zorkus: Tôi không chắc chính xác loại vấn đề bạn gặp phải với Thư mục Apache, và nguyên nhân gốc rễ của điều đó là gì, nhưng nếu tất cả những gì bạn cần là một máy chủ LDAP nhúng làm việc để kiểm tra tích hợp với Spring An ninh sau đó bạn có thể muốn xem xét một số lựa chọn thay thế.

Gần đây tôi đã bắt đầu điều tra các lựa chọn thay thế, bởi vì tôi không thể đạt được với Thư mục Apache những gì tôi muốn mặc dù đã tốn rất nhiều thời gian và công sức. (Về cơ bản tôi muốn sao chép lược đồ và cơ sở dữ liệu người dùng của một cá thể Active Directory vào một máy chủ được nhúng.)

Điều tôi thấy là UnboundID LDAP SDK là một sự thay thế tốt đẹp. Tích hợp với nó đòi hỏi nỗ lực nhiều hơn một chút so với một lớp lót trong bối cảnh mùa xuân của bạn (như <security:ldap-server/>), nhưng không nhiều hơn nữa. Bắt đầu lập một máy chủ LDAP đòi hỏi chỉ là một vài dòng mã:

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

Các phụ thuộc duy nhất bạn sẽ cần cho việc này để làm việc là:

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

Nó sẽ là khá dễ dàng để bọc các mã trên trong một lớp mà bạn có thể khởi tạo và cấu hình từ ngữ cảnh Spring của bạn.

Đối với tài liệu và mã ví dụ trên see UnboundID LDAP SDK: https://www.unboundid.com/products/ldap-sdk/docs/

(. Tôi không liên kết với UnboundID dưới mọi hình thức)

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