Один оператор удалил словарь данных и перезапустил Alfresco 3.4.12 Enterprise Edition. Контекст / 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)
Заранее спасибо.
Луис
Я бы дал старый добрый экспорт / импорт попробовать community.alfresco.com/docs/DOC-4840-export-and-import для импорта из восстановленной резервной копии базы данных или из ванильной системы.
У вас нет хорошей резервной копии, из которой можно было бы восстановить данные?
IIRC есть специальный патч начальной загрузки, который, если вы удалите запись о примененном патче, приведет к воссозданию словаря данных. Но вы попали на довольно опасную передовую территорию ... Я бы посоветовал вам просто вызвать в службу поддержки Alfresco и получить их помощь, они могут поговорить с вами через это!