我从Alfresco开始。我安装了Alfresco 4社区版,我正在尝试使用OpenCMIS连接到它。我从OpenCMIS页面中获取了这段代码:
SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
Map<String, String> parameter = new HashMap<String, String>();
parameter.put(SessionParameter.USER, "admin");
parameter.put(SessionParameter.PASSWORD, "admin");
parameter.put(SessionParameter.ATOMPUB_URL,
"http://repo.opencmis.org/inmemory/atom/");
parameter.put(SessionParameter.BINDING_TYPE,
BindingType.ATOMPUB.value());
parameter.put(SessionParameter.REPOSITORY_ID,
"");
Session s = sessionFactory.createSession(parameter);
但是,我无法找出存储库ID应该是什么以及如何指定Alfresco的URL。有人可以向我解释一下吗?谢谢。
答案 0 :(得分:12)
<强> TL; DR:强>
// User credentials.
parameters.put(SessionParameter.USER, "admin");
parameters.put(SessionParameter.PASSWORD, "admin");
// Connection settings.
parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
parameters.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/service/cmis"); // URL to your CMIS server.
parameters.put(SessionParameter.AUTH_HTTP_BASIC, "true" );
parameters.put(SessionParameter.COOKIES, "true" );
// Create session.
// Alfresco only provides one repository.
Repository repository = sessionFactory.getRepositories(parameters).get(0);
Session session = repository.createSession();
来自CMIS spec:
应用程序必须使用CMIS“”获取存储库“”服务 (getRepositories)获取可用的存储库列表 在那个端点
存储库ID是由CMIS存储库生成的不透明字符串,您通常会发现它而不是预先知道。此外,单个CMIS服务器可以托管多个存储库(尽管Alfresco目前仅支持一个存储库)。
说到Alfresco,存储库ID在每个实例的基础上是不同的,所以如果你从干净的数据库重新开始重新生成ID,那么如果它依赖于硬编码的repo ID就会破坏你的应用程序
通过AtomPub绑定中的服务文档和Web服务绑定中的cmisRepositoryEntryType
,可以实现存储库ID发现。