0

首先,如果有人可以添加“apache-chemistry”标签,我将不胜感激,我没有足够的法力。

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

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

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

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

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

4

3 回答 3

1

它应该是

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

请参阅此处创建本地绑定实例和 此处的 LOCAL_FACTORY 描述

于 2011-03-21T23:04:29.353 回答
1

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

于 2011-03-22T00:12:04.313 回答
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);

拿到源码后,看一下LOCAL_FACTORY参数值“InMemoryServiceFactoryImpl”。这个工厂有一个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();

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

于 2011-03-22T15:21:42.873 回答