Alfresco Community 5.2克隆后启动失败:上下文初始化错误
解决Alfresco 5.2中命名空间未定义导致的Bootstrap失败问题
核心问题定位
报错01020047 Bootstrap failed和01020049 Not all patches could be applied的根源是自定义模型的命名空间http://www.adama.com/model/adamaStudyNotification/1.0未被Alfresco仓库字典正确加载,导致依赖该命名空间的补丁或引导逻辑执行失败。
分步解决方案
1. 确认自定义模型的正确性与部署路径
- 首先检查项目中的自定义模型XML文件(比如
adamaStudyNotificationModel.xml),确保命名空间定义正确:<model name="asn:adamaStudyNotification" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <namespaces> <namespace uri="http://www.adama.com/model/adamaStudyNotification/1.0" prefix="asn"/> </namespaces> <!-- 其他模型内容:导入、类型、切面定义等 --> </model> - 验证模型的部署位置:
- 若使用AMP包部署,模型文件需放在
src/main/amp/config/alfresco/module/[你的模块ID]/model目录下 - 若直接部署到Alfresco,模型文件要放在
ALFRESCO_HOME/alfresco/extension/model,同时在custom-model-context.xml中注册模型:<bean id="adamaStudyNotificationModel" parent="dictionaryModel"> <property name="model" value="alfresco/extension/model/adamaStudyNotificationModel.xml"/> </bean>
- 若使用AMP包部署,模型文件需放在
2. 调整补丁与模型的加载顺序
补丁执行依赖已加载的模型,需确保模型在补丁之前被初始化:
- 查看项目中的补丁类(继承
AbstractPatch的类),检查是否引用了该命名空间的类型/切面(比如asn:studyNotification) - 在补丁类中添加依赖,确保模型加载完成后再执行补丁:
@Override public String[] getDependencies() { return new String[] {"dictionaryBootstrap"}; // 依赖字典引导完成 } - 或者在Spring配置中给补丁bean添加
depends-on="adamaStudyNotificationModel"属性
3. 清理缓存并重新部署
缓存残留可能导致模型未被重新加载:
- 删除Alfresco Tomcat的缓存目录:
ALFRESCO_HOME/tomcat/work、ALFRESCO_HOME/tomcat/temp - 删除仓库缓存:
ALFRESCO_HOME/alfresco/workspace/SpacesStore(注意:生产环境务必先备份数据!) - 重新构建项目(Maven项目执行
mvn clean install),重新部署AMP或WAR包 - 启动Alfresco时,检查
catalina.out日志,确认是否有Registered model: http://www.adama.com/model/adamaStudyNotification/1.0的条目,说明模型加载成功
4. 修正站点引导的依赖关系
如果之前添加的站点引导代码引用了该命名空间的内容,需调整引导执行顺序:
- 在站点引导的Spring bean配置中添加
depends-on属性,依赖模型bean:<bean id="adamaSiteBootstrap" class="com.adama.SiteBootstrap" depends-on="adamaStudyNotificationModel"> <!-- 引导配置参数 --> </bean>
内容的提问来源于stack exchange,提问作者Mike1988B
相关产品推荐
相关产品推荐

