2014-07-25 45 views
0

幾周前,我開發了一個基於Alfresco 3.4.14的AMP。 在該模塊中,我創建了一些定製服務。該業務之一是用來管理用戶,用一種方法來創建新用戶:Alfresco personService.createPerson使用彈簧組件時出現錯誤 - 掃描

public NodeRef createUser(<my_parameters>) { 
    .......................... 
    .......................... 
    HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>(); 

    properties.put(ContentModel.PROP_USERNAME, username); 
    properties.put(ContentModel.PROP_PASSWORD, password); 
    .......................... 
    .......................... 
    NodeRef person = personService.createPerson(properties); 
    return person; 
} 

所有的服務都在露天上下文文件中定義:

<?xml version='1.0' encoding='UTF-8'?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <bean id="customUserService" class="com.mycustom.service.impl.CustomUsersServiceImpl"> 
     <property name="personService" ref="PersonService"/> 
     <property name="nodeService" ref="NodeService"/> 
    </bean> 
    <bean id="customProjectsService" class="com.mycustom.service.impl.CustomProjectsServiceImpl"> 
     <property name="searchService" ref="SearchService"/> 
     <property name="nodeService" ref="NodeService"/> 
    </bean> 
</beans> 

一切都正常工作。我能夠創建用戶,執行我的其他定製服務......直到這裏完美!!!!!!!!該應用程序正常工作。


前幾天,而不是確定的背景下,所有的豆類,我們決定開始使用Spring註解:

package com.mycustom.service.impl; 

@Service("customUsersService") 
public class CustomUsersServiceImpl implements CustomUsersService { 

    @Override 
    public NodeRef createUser(<my_parameters>) { 
    } 
} 

,並在上下文文件,使用彈簧組件掃描:

<?xml version='1.0' encoding='UTF-8'?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:annotation-config/> 
    <context:component-scan base-package="com.mycustom.service" /> 
</beans> 

所有的服務工作正常,應用程序看起來也正常工作。我們很高興,因爲我們可以使用註釋來解耦我們的應用程序。

BUTTTTTTTTTTTT,當我試圖創建一個用戶,通過瀏覽器或波谷,我得到了同樣的錯誤應用:無法創建人,由於錯誤:XXXXXXX beforeCreateNode:使用PersonService創建人

enter image description here

回答

0

調試PersonServiceImpl類,我所檢測的錯誤是在該行 beforeCreateNodeValidationBehaviour.enable();

public NodeRef createPerson(Map<QName, Serializable> properties, Set<String> zones) { 
    ..................... 
    ..................... 
    NodeRef personRef = null; 
     try 
     { 
      beforeCreateNodeValidationBehaviour.disable(); 

      personRef = nodeService.createNode(
        getPeopleContainer(), 
        ContentModel.ASSOC_CHILDREN, 
        getChildNameLower(userName), // Lowercase: 
        ContentModel.TYPE_PERSON, properties).getChildRef(); 
     } 
     finally 
     { 
      //ERROR!!!!!!!!!!!!!!!! 
      beforeCreateNodeValidationBehaviour.enable(); 
     } 
    ..................... 
    ..................... 
} 

一些調查,當我們恢復代碼,並取下彈簧組件掃描後,應用程序再次正常工作。

我們開了一張票,露天的支持,他們告訴我們,這個問題是在露天4.1.4

那麼誰正在使用露天的先前版本像我們這樣的人,請謹慎使用和刪除組件掃描並將其替換爲手動佈線。