ProviderNotFoundException при вызове Java WebScript

Я хочу получить все свойства типа cm:person и отобразить его в таблице. Для этого у меня есть Java WebScript.

Но когда я звоню, я получаю исключение:

net.sf.acegisecurity.providers.ProviderNotFoundException: нет поставщика проверки подлинности для net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken

В веб-скрипте я отметил, где генерируется исключение:

public class AssignmentsRetriever extends DeclarativeWebScript {
    Logger logger = Logger.getLogger(AssignmentsRetriever.class);

    private WorkflowService workflowService;
    private PersonService personService;
    private NodeService nodeService;

    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
        String taskId = req.getParameter("taskId");

        WorkflowTaskQuery tasksQuery = new WorkflowTaskQuery();
        WorkflowTask workflowTask = workflowService.getTaskById("activiti$"+taskId);

        tasksQuery.setProcessId(workflowTask.getPath().getInstance().getId());

        List<WorkflowTask> allWfTasks = 
            workflowService.queryTasks(tasksQuery, true);
        NodeRef personNodeRef;
        Map<QName, Serializable> personProperties;
        Iterator iterator;
        for (WorkflowTask task : allWfTasks) {
            logger.debug("processId == " + 
                task.getPath().getInstance().getId());

            personNodeRef = 
              personService.getPerson("{http://www.alfresco.org/model/content/1.0}owner");

            // Here an exception is thrown
            logger.debug("cm:userName == " + 
                nodeService.getProperties(personNodeRef).get("cm:userName"));

            // Here an exception is thrown
            personProperties = nodeService.getProperties(personNodeRef);
            iterator = personProperties.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry pairs = (Map.Entry)iterator.next();
                logger.debug(pairs.getKey() + " = " + pairs.getValue());
            }
        }

        ...         

        return model;
    }

    public WorkflowService getWorkflowService() {
        return workflowService;
    }

    public void setWorkflowService(WorkflowService workflowService)
    {
        this.workflowService = workflowService;
    }

    public void setNodeService(NodeService nodeService) {
        this.nodeService = nodeService;
    }

    public NodeService getNodeService() {
        return nodeService;
    }

    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }

    public PersonService getPersonService() {
        return personService;
    }
}

Что может быть причиной?..

Буду очень признателен за информацию. Спасибо всем.


Странно я заменил logger.debug(...) в System.out.println(...) и теперь я вижу в журнале следующее:

alfrescotomcat-stdout.2017-03-15.log:

...
 null
{http://www.alfresco.org/model/content/1.0}email = 
{http://www.alfresco.org/model/content/1.0}homeFolder = workspace://SpacesStore/ac210417-f260-4b24-85ec-7fea912383a4
{http://www.alfresco.org/model/system/1.0}node-uuid = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/content/1.0}name = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/system/1.0}store-identifier = SpacesStore
{http://www.alfresco.org/model/content/1.0}userName = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/content/1.0}homeFolderProvider = userHomesHomeFolderProvider
{http://www.alfresco.org/model/content/1.0}owner = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/system/1.0}cascadeCRC = 3614281327
{http://www.alfresco.org/model/content/1.0}sizeQuota = -1
{http://www.alfresco.org/model/system/1.0}cascadeTx = 295
{http://www.alfresco.org/model/content/1.0}lastName = 
{http://www.alfresco.org/model/content/1.0}organizationId = 
{http://www.alfresco.org/model/content/1.0}sizeCurrent = 0
{http://www.alfresco.org/model/system/1.0}store-protocol = workspace
{http://www.alfresco.org/model/system/1.0}node-dbid = 1145
{http://www.alfresco.org/model/system/1.0}locale = 
{http://www.alfresco.org/model/content/1.0}firstName = {http://www.alfresco.org/model/content/1.0}owner
null
{http://www.alfresco.org/model/content/1.0}email = 
{http://www.alfresco.org/model/content/1.0}homeFolder = workspace://SpacesStore/ac210417-f260-4b24-85ec-7fea912383a4
{http://www.alfresco.org/model/system/1.0}node-uuid = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/content/1.0}name = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/system/1.0}store-identifier = SpacesStore
{http://www.alfresco.org/model/content/1.0}userName = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/content/1.0}homeFolderProvider = userHomesHomeFolderProvider
{http://www.alfresco.org/model/content/1.0}owner = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/system/1.0}cascadeCRC = 3614281327
{http://www.alfresco.org/model/content/1.0}sizeQuota = -1
{http://www.alfresco.org/model/system/1.0}cascadeTx = 295
{http://www.alfresco.org/model/content/1.0}lastName = 
{http://www.alfresco.org/model/content/1.0}organizationId = 
{http://www.alfresco.org/model/content/1.0}sizeCurrent = 0
{http://www.alfresco.org/model/system/1.0}store-protocol = workspace
{http://www.alfresco.org/model/system/1.0}node-dbid = 1145
{http://www.alfresco.org/model/system/1.0}locale = 
{http://www.alfresco.org/model/content/1.0}firstName = {http://www.alfresco.org/model/content/1.0}owner
...

1 ответ

Сегодня я столкнулся с аналогичной проблемой при отладке кода Visual Studio, и проблема оказалась в самом отладчике.

Кажется, что если вы установите точку останова в строке, которая вызывает nodeService (я думаю, из других аутентифицированных служб) и перейдете через нее, возникает проблема.

Вероятно, это как-то связано с тем фактом, что Alfresco, вероятно, хранит информацию об аутентификации на уровне потока, и я предполагаю, что инструментарий отладчика может запускать этот шаг в другом потоке или что-то в этом роде.

К счастью, кажется, что проблему можно решить, просто «перебежав» черту, не заступая за нее.

Другие вопросы по тегам