在配置 Alfresco LDAP 集成时提供自定义命名空间

provide custom namespace while configuring Alfresco LDAP integration

我安装了带有 ldap-ad users/group 同步的 Alfresco Community 5.2,一切正常。

现在我必须添加具有某些属性的方面,让 ldap 处理它们,将它们添加到 cm:person。 所以我按照建议 here 自定义了 common-ldap-context.xml,但我只是设法覆盖原始的 Alfresco 内容模型,使用 cm: 前缀作为 aspect/property 命名空间。

如果我使用我的个人模型前缀,每当我启动 Alfresco 时,我都会收到来自 spring 加载 common-ldap-context.xml 文件的“未知命名空间”错误。

如何将我的命名空间导入该文件?有没有可能我必须使用 cm: 前缀?

这是我的 common-ldap-context.xml 片段

<property name="personAttributeMapping">
    <map>
        <!-- ... -->
        <entry key="myc:prop1">
           <value>${ldap.synchronization.prop1</value>
        </entry>
        <entry key="myc:prop2">
            <value>${ldap.synchronization.prop2</value>
        </entry>
        <entry key="myc:prop3">
           <value>${ldap.synchronization.prop3</value>
        </entry>
        <entry key="myc:prop4">
            <value>${ldap.synchronization.prop4</value>
        </entry>
        <!-- ... -->
    </map>
</property>

common-ldap-context.xml 中的 personAttributeMapping 位于路径 Alfresco/tomcat/shared/classes/alfresco/extension/Authentication/ldap-context.xml 中。自定义文档模型在 bean 组件中定义,从 bootstrap.context.xml

加载

谢谢。

我定义了所需的 bean 提示 depends-on="..."(当然是使用你的 bean 名称加载模型)。

所以我的 custom-ldap-context.xmlin extension/subsystems/Authentication/ldap-ad/ldap-ad1(文件夹取决于您配置的子系统)看起来像:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<!--
   Bean definitions shared by the ldap and ldap-ad subsystems
-->

<beans>

   <!-- Regularly exports user and group information from LDAP -->

        <bean id="ecm4u.personDetails.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
                <property name="models">
                        <list>
                                <value>alfresco/extension/personDetails.xml</value>
                        </list>
                </property>
        </bean>

<bean id="userRegistry" class="org.alfresco.repo.security.sync.ldap.LDAPUserRegistry" depends-on="ecm4u.personDetails.dictionaryBootstrap">

<!-- snap -->

      <property name="personAttributeMapping">
         <map>

<!-- snap -->

           <!-- BEGIN New properties -->
            <entry key="pd:employeeNumber">
               <value>${ldap.synchronization.userEmployeeNumberAttributeName}</value>
            </entry>
            <!-- END New properties -->

<!-- snap -->