使用Apache Chemistry对OpenCMIS服务器进行本地绑定

时间:2011-03-21 22:38:41

标签: java cmis apache-chemistry

首先,如果有人能添加“apache-chemistry”标签,我会很感激,我没有足够的法术力。

我找不到关于 this 本地绑定的任何信息,这是连接到OpenCMIS服务器的第三种方式。

例如,当人们希望拥有一个到远程存储库的共享访问层和一个本地运行的JCR存储库时就是这种情况。很明显远程设置是如何工作的,但我不明白这是什么意思:

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

编辑:与此同时,我发现它可能是存储库连接器,来自CMIS客户端的数据被转换和推送,但我不确定......

  

存储库连接器必须扩展   AbstractServiceFactory类

3 个答案:

答案 0 :(得分:1)

应该是

  

本地服务的类名   如果客户端和服务器驻留在工厂   在同一个JVM中

参见创建本地绑定实例 here以及LOCAL_FACTORY here的说明

答案 1 :(得分:1)

您必须拥有OpenCMIS server implementation才能使用本地绑定。如果有,则传递服务工厂的类名,客户端将使用它。它将直接调用服务(Java接口)而不通过网络发送数据。客户端没有别的事情要做。

答案 2 :(得分:0)

解释起来很复杂,我想最好的办法是从SVN中查看inMemoryServer。您引用的文档是Client 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参数值。这个工厂有一个service()方法返回InMemoryService,它保存对所有类型的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();

等等,看看测试,它实际上涵盖了大多数用例。