我正在开发一个Liferay portlet,它通过Cmis和wsdl绑定连接到Alfresco存储库,(BINDING_TYPE = BindingType.WEBSERVICES)
到目前为止,我已经实现了大多数必需的功能(浏览,文件夹/Doc管理,文档版本,权限等)。现在是时候实现一些与方面相关的功能了,所以是时候使用露天开放CMIS扩展了,这似乎是一个简单的过程。
我必须做的一件事是将Session Factory更改为"AlfrescoObjectFactoryImpl"
parameter.put(SessionParameter.OBJECT_FACTORY_CLASS, "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");
在那之后,Ι 仍然成功地获得了会话,但是一旦我尝试获取任何存储库文件夹,我在转换文件夹属性时就会收到 InvalidArgumentException
我的调试日志:
! 12:51:11,542 调试 CmisWebServicesSpi:58 - 初始化 Web 服务 SPI... 12:51:11,692 调试 AbstractPortProvider:244 - 初始化 Web Service org.apache.chemistry.opencmis.binding.webservices.ObjectService... 12:51:16,426 调试端口提供程序:65 - 创建 {http://docs.oasis-open.org/ns/cmis/ws/200908/}ObjectService 的 Web 服务端口对象... 12:51:36,103 错误 [render_portlet_jsp:154] java.lang.IllegalArgumentException: 未知方面属性: http://docs.oasis-open.org/ns/cmis/core/200908/ at org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl.convertProperties(AlfrescoObjectFactoryImpl.java:265) at org.apache.chemistry.opencmis.client.runtime.AbstractCmisObject.initialize(AbstractCmisObject.java:108) at org.alfresco.cmis.client.impl.AlfrescoFolderImpl.initialize(AlfrescoFolderImpl.java:46) at org.apache.chemistry.opencmis.client.runtime.FolderImpl.(文件夹.java:69) at org.alfresco.cmis.client.impl.AlfrescoFolderImpl.(AlfrescoFolderImpl.java:39) .........................
我正在使用:Liferay 6.1 和 alfresco-opencmis-extension-0.3.jar
存储库是露天社区 - v4.0.0 (4003)
到目前为止,我最好的猜测是某些属性定义未正确设置,因为命名空间作为方面属性传递
对我做错了什么有什么想法吗?
请注意,我还没有尝试做任何与方面相关的事情。通过注释掉"OBJECT_FACTORY_CLASS"参数,一切正常!
在遵循Gagravarr的想法后,我尝试了ATOMPUB绑定而不是Web服务,最终连接成功。
事实证明,AlfrescoAspectsUtils.findAlfrescoExtensions获取的alfrescoExtensions包含属性不正确的属性DefinitionId,这导致AlfrescoAspectsUtils.findAspect崩溃。
也许该存储库的 Web 服务绑定可能未正确设置
经过一些调试后,相同的属性值为
WSDL:-propertyDefinitionId = (http)://docs.oasis-open.org/ns/cmis/core/200908/
原子:属性定义 ID = 应用:图标
谢谢加格拉瓦尔!