使用web浏览器测试我的Tridion content delivery web服务时,我可以通过调用"成功获取可用集合的列表http://webservice/odata...svc/",但是当我尝试访问其中一个集合时,例如;

http://webservice/odata.svc/Publications

我得到;

<message xml:lang="en-US">Unable to retrieve desired results.</message>

或特定项目

http://webservice/odata.svc/Publications(19)

我得到:

<message xml:lang="en-US">Unable to build publication entry: 
                             Unable to retrieve desired results.</message>

在日志中,我得到以下内容(我删除了时间戳等)。为了使它更具可读性):

ODataService - ODATA.NET: Resource retrieval: Publications
WebContext - setCurrentClaimStore: com.tridion.ambientdata.dotnet.DotNetClaimStore@576504fa, thread: Thread-5
ODataWebserviceHandler - Requested a OData feed/entry: Publications with type: application/atom+xml
ODataWebserviceHandler - Setting $top to 25
ResolverBase - Requested OData collection
StorageManagerFactory - Loading a non cached DAO for publicationId/typeMapping/itemExtension: 0 / Query / null
JPQLExecutor - Can not create JPAQueryDAO object
    com.tridion.broker.StorageException: No Data Access Object for Query
    at com.tridion.storage.filesystem.FSDAOFactory.getDAOForTypeMapping(FSDAOFactory.java:177) ~[cd_datalayer.jar:na]
    at com.tridion.storage.StorageManagerFactory.getOriginalDAO(StorageManagerFactory.java:450) ~[cd_datalayer.jar:na]
    at com.tridion.storage.StorageManagerFactory.getDAO(StorageManagerFactory.java:271) ~[cd_datalayer.jar:na]        
    at com.tridion.storage.StorageManagerFactory.getDefaultDAO(StorageManagerFactory.java:178) ~[cd_datalayer.jar:na]
    at com.tridion.webservices.odata.input.jpql.JPQLExecutor.<init>(JPQLExecutor.java:61) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.jpql.JPQLExecutor.getExecutor(JPQLExecutor.java:103) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.resolver.PublicationsResolver.resolveCollection(PublicationsResolver.java:34) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.resolver.ResolverBase.resolve(ResolverBase.java:74) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.handler.ODataFeedRenderer.renderODataFeed(ODataFeedRenderer.java:45) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.handler.ODataWebserviceHandler.handleODataEntity(ODataWebserviceHandler.java:193) [cd_webservice.jar:na]
    at com.tridion.webservices.odata.input.handler.ODataWebserviceHandler.handleResourceRequest(ODataWebserviceHandler.java:169) [cd_webservice.jar:na]
FilterValue - check if value: 25 is of Integer type
FilterValue - value: 25 is Integer
JPQLExecutor - JPAQueryDAO has not been instantiated. Probably FS storage type was used.    
ResolverBase - Unable to build feed Unable to retrieve desired results.    

此消息指向我的存储配置,但是我无法在文档中找到任何关于如何设置它以支持web服务的明确指导。

我的存储应该如何配置?期望为服务和网站有一个单独的部署者是正常的吗?我应该考虑哪些其他问题?

有帮助吗?

解决方案

CD Webservice要求您的所有内容都在CD DB中。这意味着文件系统上没有任何内容。如果您仍然在FS上有东西,CD Webservice的某些部分将无法工作。例如,考虑可能在FS上的页面-您将无法通过CD Webservice检索PageContent。

到您的问题,请检查您的CD Webservice cd_storage_conf。xml定义数据库(JPA)连接。当然,它是功能性的。检查通常的嫌疑人,数据库连接,用户,传递,url,Jar。..

编辑: 仔细查看堆栈跟踪,您必须将FS定义为默认存储介质(由于 getOriginalDAO(...), ,产生一个 FSDAOFactory.getDAOForTypeMapping(...)).所以我认为这是问题的根源。还要检查您的许可证是否有效,并且由于缺少/过期的CD许可证,您的"绑定"没有恢复到FS。

其他提示

作为其他人的额外输入,我也经历了“无法检索所需的结果”。响应,并且在我的情况下,它是由于我的cd_licenses.xml没有在bin / config目录中,其他配置文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top