2011-03-21 58 views
0

首先,如果有人可以添加「apache-chemistry」標記,我沒有足夠的法力值。本地綁定到使用Apache化學的OpenCMIS服務器

我在this上找不到任何信息本地綁定,它是連接到OpenCMIS服務器的第三種方式。

例如,當人們想要共享訪問層到遠程存儲庫和本地運行的JCR存儲庫時,就是這種情況。很明顯將遠程設置是如何工作的,但我不明白這是什麼意思是:

parameter.put(SessionParameter.LOCAL_FACTORY, "my.local.factory"); 

編輯:在此期間,我發現它可能是庫連接器,供來自CMIS客戶數據被轉換並推,但我不知道......

存儲庫連接器具有擴展 的AbstractServiceFactory類

+0

*波浪魔杖* .....完成! – skaffman 2011-03-21 22:52:49

回答

0

解釋起來很複雜,我想最好的辦法是從SVN中檢出inMemoryServer。您引用的文檔是客戶端API的示例,其中會話界面包含最重要的CMIS操作。

SessionFactory factory = SessionFactoryImpl.newInstance(); 
Map<String, String> parameter = new HashMap<String, String>(); 
.......... 
parameter.put(SessionParameter.LOCAL_FACTORY, "my.local.factory"); 
.......... 
Session session = factory.createSession(parameter); 

之後,你有來源,看看「InMemoryServiceFactoryImpl」,這是LOCAL_FACTORY參數值。該工廠有一個返回InMemoryServiceservice()方法,該方法持有對所有類型CMIS服務的引用,並將其作爲某種外觀以便通過客戶端API(會話方式)簡化使用。

另一種方法是使用客戶端綁定API,您可以直接訪問具體的CMIS服務。

CmisBindingFactory factory = CmisBindingFactory.newInstance(); 
CmisBinding binding = factory.createCmisLocalBinding(parameters); // LocalBinding !! 
fFactory = binding.getObjectFactory(); 
fRepSvc = binding.getRepositoryService(); 
fObjSvc = binding.getObjectService(); 
fNavSvc = binding.getNavigationService(); 
fVerSvc = binding.getVersioningService(); 
fMultiSvc = binding.getMultiFilingService(); 
fDiscSvc = binding.getDiscoveryService(); 

等等,看看測試,這實際上覆蓋了大部分的用例。

1

它應該是

0123本地服務 廠

類的名稱,如果客戶端和服務器在同一個JVM駐留

創建本地綁定實例here和說明LOCAL_FACTORY here

+0

amol,難道你不會有更多的信息嗎?這實際上就是我說的......接下來要做什麼?在我實現AbstractServiceFactory之後......就像CMIS客戶端調用CmisService getService(CallContext上下文)這個方法,所有服務器端的東西都完成了,我想......客戶端應該做什麼?我不明白...我得到真正的客戶端服務器模型,不是這個 – lisak 2011-03-21 23:31:46

+0

好吧,起初我認爲你的問題是更基本的,但如果是「如何使用OpenCMIS/Chemistry公開然後訪問本地JCR存儲庫」,我不認爲答案很簡單(還)。請參閱http://chemistry.apache.org/java/opencmis-jcr-repository.html – 2011-03-22 00:01:46

1

你必須有一個OpenCMIS server implementation使用本地綁定。如果有,請傳遞服務工廠的類名稱,客戶端將使用它。它將直接調用服務(Java接口),而不通過網絡發送數據。在客戶端沒有別的事情要做。

相關問題