문제

[해결됨, Alfresco 3.3.0g에는 더 이상 존재하지 않는 Alfresco 3.3.0에 영향을 미치는 버그가 있었던 것 같습니다.]

안녕,

나는 사용하고있다 오픈CMIS Alfresco 3.3에서 데이터를 검색했지만 CMISQL 쿼리에서 매우 이상한 동작이 발생했습니다.같은 문제로 다른 사람을 검색해 봤는데 제가 전 세계에서 첫 번째인 것 같습니다. :) OpenCMIS가 아닌 내 잘못인 것 같습니다.

이것이 내가 Alfresco에 쿼리하는 방법입니다.

public Class CmisTest {
    private static Session sesion;

    private static final String QUERY = "select cmis:objectid, cmis:name from cmis:folder where cmis:name='MyFolder'";

    public static void main(String[] args) {
        // Open a CMIS session with Alfresco
        Map<String, String> params = new HashMap<String, String>();
        params.put(SessionParameter.USER, "admin");
        params.put(SessionParameter.PASSWORD, "admin");
        params.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/s/api/cmis");
        params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
        params.put(SessionParameter.REPOSITORY_ID, "fa9d2553-1e4d-491b-87fd-3de894dc7ca9");
        sesion = SessionFactoryImpl.newInstance().createSession(params);

        // Ugly bug in Alfresco which raises an exception if we request more data than it's available
        // See https://issues.alfresco.com/jira/browse/ALF-2859
        sesion.getDefaultContext().setMaxItemsPerPage(1);

        // We repeat the same query 20 times and count the number of elements retrieved each time
        for (int i = 0; i < 20; i++) {
            List<QueryResult> result = doQuery();
            System.out.println(result.size() + " folders retrieved");
        }
    }

    public static List<QueryResult> doQuery() {
        List<QueryResult> result = new LinkedList<QueryResult>();
        try {
            int page = 0;
            while (true) {
                ItemIterable<QueryResult> iterable = sesion.query(QUERY, false).skipTo(page);
                page++;
                for (QueryResult qr : iterable) {
                    result.add(qr);
                }
            }
        } catch (Exception e) {
            // We will always get an exception when Alfresco has no more data to retrieve... :(
            // See https://issues.alfresco.com/jira/browse/ALF-2859
        }
        return result;
    }

}

보시다시피 동일한 쿼리를 최대 20번 연속으로 실행합니다.매번 같은 결과를 기대할 수 있지 않습니까?불행하게도 이것은 우리가 얻은 것의 샘플입니다:

1 folders retrieved
1 folders retrieved
1 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
0 folders retrieved
1 folders retrieved
1 folders retrieved

때로는 20을 얻습니다. 1 연속적으로, 때로는 그게 전부야 0.우리는 결코 "혼합"을 얻지 못했습니다 1 그리고 0, 그렇지만;우리는 항상 그것들을 "실행"합니다.

각 쿼리 전에 세션을 생성하는 것은 중요하지 않지만 여전히 임의의 문제가 있습니다.우리는 두 개의 서로 다른 Alfresco 서버(둘 다 3.3 커뮤니티)에 대해 새로 설치를 시도했지만 둘 다 무작위로 실패했습니다.또한 각 쿼리에 대한 시간을 측정해 보았지만 결과가 잘못된 것과는 아무런 관련이 없는 것 같습니다(0 folders retrieved) 또는 오른쪽(1 folders retrieved).

Alfresco는 잘 작동하는 것 같습니다."관리 --> 노드 브라우저"로 이동하여 거기에서 CMISQL 쿼리를 실행하면 항상 하나의 폴더를 검색하는데, 이는 맞습니다.그렇다면 우리의 코드이거나 OpenCMIS 버그임이 틀림없습니다...

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

이 동작을 재현할 수 없습니다.상대로는 잘 돌아가고 있어요 http://cmis.alfresco.com .문제 https://issues.alfresco.com/jira/browse/ALF-2859 버그 수정이 있었다고 합니다.최신 Alfresco 버전을 실행하고 있나요?

플로리안

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top