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, вероятно, хранит информацию об аутентификации на уровне потока, и я предполагаю, что инструментарий отладчика может запускать этот шаг в другом потоке или что-то в этом роде.
К счастью, кажется, что проблему можно решить, просто «перебежав» черту, не заступая за нее.