Alfresco WS Client API - 使用fetchMore方法时的WSSecurityException

时间:2014-12-09 19:53:07

标签: web-services authentication alfresco

有人可以告诉我这里的代码有什么问题吗...我在第一次调用 contentService.read(...)后总是遇到此异常第一次fetchMore已经发生。

org.apache.ws.security.WSSecurityException:无法对安全令牌进行身份验证或授权

// Here we're setting the endpoint address manually, this way we don't need to use
// webserviceclient.properties
WebServiceFactory.setEndpointAddress(wsRepositoryEndpoint);
AuthenticationUtils.startSession(wsUsername, wsPassword);

// Set the batch size in the query header
int batchSize = 5000;
QueryConfiguration queryCfg = new QueryConfiguration();
queryCfg.setFetchSize(batchSize);

RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();
repositoryService.setHeader(new RepositoryServiceLocator().getServiceName().getNamespaceURI(), "QueryHeader", queryCfg);

ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();

String luceneQuery = buildLuceneQuery(categories, properties);

// Call the repository service to do search based on category
Query query = new Query(Constants.QUERY_LANG_LUCENE, luceneQuery);

// Execute the query
QueryResult queryResult = repositoryService.query(STORE, query, true);

String querySession = queryResult.getQuerySession();
while (querySession != null) {            
    ResultSet resultSet = queryResult.getResultSet();
    ResultSetRow[] rows = resultSet.getRows();
    for (ResultSetRow row : rows) {
        // Read the content from the repository
        Content[] readResult = contentService.read(new Predicate(new Reference[] { new Reference(STORE, row.getNode().getId(), null) },
            STORE, null), Constants.PROP_CONTENT);
        Content content = readResult[0];
        [...]
    }            
    // Get the next batch of results
    queryResult = repositoryService.fetchMore(querySession);
    // process subsequent query results
    querySession = queryResult.getQuerySession();
}

0 个答案:

没有答案