意外删除数据字典(app:Dictionary)后,Alfresco不会';开始

意外删除数据字典(app:Dictionary)后,Alfresco不会';开始,alfresco,alfresco-enterprise,Alfresco,Alfresco Enterprise,一名操作员删除了数据字典,并重新启动了Alfresco 3.4.12企业版。上下文/露天不会以以下异常开始: 17:43:11,100 INFO [STDOUT] 17:43:11,097 ERROR [web.context.ContextLoader] Context initialization failed org.alfresco.error.AlfrescoRuntimeException: 08050000 Failed to find 'app:dictionary' nod

一名操作员删除了数据字典,并重新启动了Alfresco 3.4.12企业版。上下文/露天不会以以下异常开始:

17:43:11,100 INFO  [STDOUT] 17:43:11,097  ERROR [web.context.ContextLoader] Context initialization failed
org.alfresco.error.AlfrescoRuntimeException: 08050000 Failed to find 'app:dictionary' node
at org.alfresco.repo.action.scheduled.ScheduledPersistedActionServiceImpl.locatePersistanceFolder(ScheduledPersistedActionServiceImpl.java:132)
查看org.alfresco.repo.action.ScheduledPersistedActionServiceImpl.java中的源代码,路径是硬连线的

然后,我们按照来自的提示,编辑bootstrap-context.xml,注释掉这个类

更改后错误消失,现在格式副本服务无法启动

我们正在寻找一种恢复已删除节点的方法,因为我们可以从数据库中获取nodeid。所以我们创建了一个小类,并通过bootstrap-context.xml中的spring调用它,但由于权限问题,它失败了。你能看一下密码,告诉我们出了什么问题吗。代码是:

package com.impulseit.test;

import javax.transaction.UserTransaction;
import org.alfresco.repo.node.archive.NodeArchiveService;
import org.alfresco.repo.node.archive.RestoreNodeReport;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;

public class RestoreNode {
    private NodeArchiveService nodeArchiveService;
    private ServiceRegistry serviceRegistry;
    private String nodeName ="archive://SpacesStore/adfc0cfe-e20b-467f-ad71-253aea8f9ac9";

    public void setNodeArchiveService(NodeArchiveService value)
    {
        this.nodeArchiveService = value;
    }

    public void setServiceRegistry(ServiceRegistry value)
    {
        this.serviceRegistry = value;
    }

    public void doRestore() {
        RunAsWork<Void> runAsWork = new RunAsWork<Void>()
        {
            public Void doWork() throws Exception
            {
                NodeRef nodeRef = new NodeRef(nodeName);
                //RestoreNodeReport restoreNodeReport =
                UserTransaction trx_A = serviceRegistry.getTransactionService().getUserTransaction();
                trx_A.begin();
                AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getSystemUserName());
                RestoreNodeReport restored = nodeArchiveService.restoreArchivedNode(nodeRef);
                trx_A.commit();
                return null;
            }
        };
        AuthenticationUtil.runAs(runAsWork,AuthenticationUtil.getSystemUserName());
    }

    public RestoreNode() {
    }
}
先谢谢你


Luis

IIRC有一个特定的引导修补程序,如果删除已应用修补程序的记录,将导致重新创建数据字典。但是你进入了非常危险的高级领域。。。我建议你打电话给户外支持,寻求他们的帮助,他们可以帮你解决问题!我会尝试从还原的备份数据库或普通系统导入旧的导出/导入。您是否没有可以从中还原的好备份?
19:31:21,747 User:admin ERROR [node.archive.NodeArchiveServiceImpl] An unhandled exception stopped the restore
java.lang.NullPointerException
    at     org.alfresco.repo.security.permissions.impl.model.PermissionModel.getPermissionReference(PermissionModel.java:1315)
at org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.getPermissionReference(PermissionServiceImpl.java:956)
    at org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.hasPermission(PermissionServiceImpl.java:976)