После случайного удаления словаря данных (приложение: словарь) Alfresco не запускается - PullRequest
0 голосов
/ 10 сентября 2018

Один оператор удалил словарь данных и перезапустил Alfresco 3.4.12 Enterprise Edition. Context / alfresco не начинается со следующего исключения:

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.scheduled.ScheduledPersistedActionServiceImpl.java, путь является аппаратным.

Затем мы последовали совету https://community.alfresco.com/thread/202859-error-failed-to-find-appdictionary-node,, редактирующему bootstrap-context.xml, закомментировали класс.

После изменения ошибка исчезла, теперь служба RenditionService не может запуститься.

Мы ищем способ восстановить удаленный узел, поскольку мы можем получить идентификатор узла из базы данных. Итак, мы создали небольшой класс и вызвали его через spring в bootstrap-context.xml, но он не работает из-за разрешений. Не могли бы вы взглянуть на код и сказать нам, что не так. Код:

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() {
    }
}

Исключение составляет:

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)

Заранее спасибо.

Луис

...