的ChangeLog of OpenCMIS 0.14說:異步CMIS客戶端:下載或上傳並行幾個文件以OpenCMIS
支持異步操作已被添加到客戶端 庫。
作爲CMIS客戶,如何使用OpenCMIS 0.14或更高版本同時執行多個並行下載或多個並行下載?
由於多線程,我的目標是更快地完成所有操作。我可以手動在幾個線程之間共享Session對象,但是如果OpenCMIS具有內置功能,我寧願使用它。
的ChangeLog of OpenCMIS 0.14說:異步CMIS客戶端:下載或上傳並行幾個文件以OpenCMIS
支持異步操作已被添加到客戶端 庫。
作爲CMIS客戶,如何使用OpenCMIS 0.14或更高版本同時執行多個並行下載或多個並行下載?
由於多線程,我的目標是更快地完成所有操作。我可以手動在幾個線程之間共享Session對象,但是如果OpenCMIS具有內置功能,我寧願使用它。
首先,create a Session照常。
然後,使用這個會話創建一個asynchronous session:
int maxParallelRequests = 10;
AsyncSessionFactory asyncFactory = AsyncSessionFactoryImpl.newInstance();
asyncSession = asyncFactory.createAsyncSession(session, maxParallelRequests);
然後用這個asyncSession,你會使用一個正常的會話對象。
通常你需要執行一些同步操作了。例如,同步創建一個文件夾,然後在該文件夾內異步上傳文件。因爲如果你不等待文件夾被創建,文件上傳可能會失敗。下面是如何在這種情況下做的:
// 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
);
通知的asyncSession.createDocument
結構上面,那是因爲你不能寫folder.createDocument
,因爲它會使用同步會話。
的futureDocumentId變量會讓你獲取文檔的標識,當你需要它,如果你需要它:
ObjectId documentId = futureDocumentId.get();
只有調用此方法,如果你真的需要它,並儘可能晚地稱它爲。