2017-02-17 5 views
0

ChangeLog of OpenCMIS 0.14와 병렬로 여러 파일을 업로드 말한다 : 비동기 작업에 대한비동기 CMIS 클라이언트 : 다운로드하거나 OpenCMIS

지원 클라이언트 라이브러리에 추가되었습니다.

OpenCMIS 0.14 이상을 사용하여 여러 가지 다운로드를 병렬로 수행하거나 여러 개의 업로드를 병렬로 수행하는 방법은 무엇입니까?

내 목표는 멀티 스레딩 덕분에 모든 작업을 더 빨리 완료하는 것입니다. 여러 스레드간에 Session 객체를 수동으로 공유 할 수 있지만 OpenCMIS에 내장 된 기능이 있으면 오히려이를 사용합니다.

답변

2

우선, 평소대로 create a Session입니다. 당신이 정상적인 세션 객체를 사용 하듯이

int maxParallelRequests = 10; 
AsyncSessionFactory asyncFactory = AsyncSessionFactoryImpl.newInstance(); 
asyncSession = asyncFactory.createAsyncSession(session, maxParallelRequests); 

다음이 asyncSession을 사용

는 다음에, asynchronous session 작성이 세션을 사용합니다.

동기 및

비동기 종종 너무 일부 동기 작업을 수행 할 것입니다 혼합. 예를 들어, 폴더를 동 기적으로 만든 다음이 폴더 내에 비동기 적으로 파일을 업로드하십시오. 폴더를 만들 때까지 기다리지 않으면 문서 업로드가 실패 할 수 있습니다. 다음과 같은 경우에 수행하는 방법입니다 :

// Create the folder synchronously. 
Folder folder = session.getRootFolder().createFolder(properties); 

// Upload the file asynchronously. 
Future<ObjectId> futureDocumentId = asyncSession.createDocument(
    properties, 
    new ObjectIdImpl(remoteFolder.getId()), 
    contentStream, 
    VersioningState.MAJOR 
); 

는 동기 세션을 사용 하듯이 folder.createDocument을 쓸 수 있기 때문에 asyncSession.createDocument 구조 위, 그것이 알 수 있습니다.

futureDocumentId 변수는 당신이 그것을 필요로 할 때 당신이 그것을 필요로하는 경우는, 문서의 식별자를 얻을 수있게된다 : 당신이 정말로 필요하면

ObjectId documentId = futureDocumentId.get(); 

만이 메소드를 호출을하고, 가능한 늦게 호출 .