【问题标题】:How to retrieve 'repository root' id/children from CMIS repository?如何从 CMIS 存储库中检索“存储库根”ID/子级?
【发布时间】:2016-09-12 17:50:35
【问题描述】:

我在一个兼容 cmis 1.0 的服务器上使用 openCMIS 库,我注意到每当我在服务器(露天 v3.2 和 v5.0 服务器)上调用 getRepositories 时,我只收到一个包含一个存储库的列表,而不是符合我的预期,即服务器上的根列表。如何使用 opencmis 库检索存储库根列表?

编辑
我不恰当地表达了这个问题,所以我会更好地解释。
我想做的是能够获得实际的 repository root id(例如,露天中的 store_root)NOT root folder id > ,这样我就可以利用 api 来检索它的直接子级,即与根文件夹(Company Home in alfresco)处于同一层次级别的对象

【问题讨论】:

  • 你用的女巫语言?!?
  • @YagamiLight 我正在使用 Java。我实际上需要获取 nodeRef 或 'store_root' 对象
  • 你想得到任何存储库的孩子吗?!?
  • 主要的StoreRef 对象是众所周知的,只需在Java 中执行StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore"); 之类的操作即可完成,无需CMIS!
  • @Gagravarr 我只能根据项目特定要求使用 opencmis 库;因为我正在研究通用 cmis 访问器工具。我一直在使用 alfresco 作为测试 cmis,只是因为那是我目前所熟悉的。

标签: alfresco cmis opencmis


【解决方案1】:

Alfresco 只有一个仓库,所以你看到的是正确的。

要了解如何获取根文件夹(即 Company Home),以及如何获取根文件夹的子文件夹,请参阅here

【讨论】:

  • 啊,你是对的。我假设与公司主页处于同一级别的所有其他对象都是存储库根,而我真正需要的是能够获取 store_Root 对象。
【解决方案2】:

对我来说很好测试它: 首先,您必须创建一个会话并将其与此连接:

private static Session getSession(String serverUrl, String username, String password) {
    SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
    Map<String, String> params = new HashMap<>();
    params.put(SessionParameter.USER, username);
    params.put(SessionParameter.PASSWORD, password);
    params.put(SessionParameter.ATOMPUB_URL, serverUrl);
    params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
    List<Repository> repos = sessionFactory.getRepositories(params);
    if (repos.isEmpty()) {
        throw new RuntimeException("Server has no repositories!");
    }
    return repos.get(0).createSession();
} 

之后只用这个

Folder folder = session.getRootFolder();

希望对你有所帮助

【讨论】:

  • 为了更清楚起见,我编辑了这个问题。我已经可以获取根文件夹 id 但不是我需要的 repo root id。
  • 有任何反馈吗?!?
  • 似乎无法获取 store_root 对象本身
猜你喜欢
  • 2011-03-28
  • 2011-10-21
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
相关资源
最近更新 更多