2014-11-08 77 views
0

我構建異步球衣web服務,現在我需要使用ldap進行一些操作。 我在這個模式下配置Spring beam.xml:Spring ldap pooling出錯

<bean id="contextSourceTarget" class="org.springframework.ldap.core.support.LdapContextSource"> 
     <property name="url" value="${ldap.url}" /> 
     <property name="base" value="${ldap.base}" /> 
     <property name="userDn" value="${ldap.userDn}" /> 
     <property name="password" value="${ldap.password}" /> 
     <property name="pooled" value="false" /> 
    </bean> 

    <bean id="contextSource" 
     class="org.springframework.ldap.pool.factory.PoolingContextSource"> 
     <property name="contextSource" ref="contextSourceTarget" /> 
    </bean> 

    <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"> 
     <constructor-arg ref="contextSource" /> 
    </bean> 

    <bean id="ldapTreeBuilder" class="com.me.ldap.LdapTreeBuilder"> 
     <constructor-arg ref="ldapTemplate" /> 
    </bean> 


    <bean id="personDao" class="com.me.ldap.PersonDaoImpl"> 
     <property name="ldapTemplate" ref="ldapTemplate" /> 
    </bean> 

但是,當我嘗試使用LDAP我有這樣的錯誤:

Error creating bean with name 'contextSource' defined in class path resource [config/Beans.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedPoolableObjectFactory 

在我的項目,我有公地pool2-2.2.jar LIB,但我仍然有這個error..i嘗試添加公地pool2-2.2.jar在TOMCAT_PATH/lib目錄但不是工程..

UPDATE:

如果我把commons-pool-1.6.jar工作..但如果我想使用pool2我該怎麼辦?只有我必須改變class class commons-pool2-2.2.jar?

回答

1

不幸的是,Spring-Ldap使用公共池而不是commons-pool2。正如您發現類commons-pool2中不存在類org.apache.commons.pool.KeyedPoolableObjectFactory(它具有不同的包結構),因此出現錯誤。

有一個JIRA問題爲Spring-LDAP項目,要求他們升級/支持公地POOL2: https://jira.spring.io/browse/LDAP-316

在此之前,已經完成了,你將不得不使用commons-pool的1.6。

+0

現在支持commons-pool2 – Marged 2017-02-15 22:15:53