Служба доставки контента сообщает "Невозможно получить желаемые результаты".
При тестировании моей веб-службы доставки контента Tridion с помощью веб-браузера я могу успешно получить список доступных коллекций, вызвав "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.
Это сообщение указывает на мою конфигурацию хранилища, однако я не смог найти четкого руководства в документации о том, как его настроить для поддержки веб-службы.
Как настроить хранилище? Нормально ли ожидать отдельного развертывателя для службы и веб-сайта? Какие еще вопросы я должен рассмотреть?
2 ответа
CD Webservice требует, чтобы весь ваш контент находился в CD DB. Это ничего не значит в файловой системе. Если у вас все еще есть что-то на FS, некоторые части CD Webservice не будут работать. Например, подумайте о страницах, которые могут быть на FS - вы не сможете получить PageContent через веб-сервис CD.
К вашей проблеме, убедитесь, что ваш CD Webservice cd_storage_conf.xml определяет соединение с базой данных (JPA). И конечно это функционально. Проверьте обычные подозреваемые, соединение с БД, пользователя, пароль, URL, JAR-файлы...
Изменить: При более тщательном рассмотрении трассировки стека, вы должны определить ФС в качестве носителя данных по умолчанию (из-за getOriginalDAO(...)
получая FSDAOFactory.getDAOForTypeMapping(...)
). Поэтому я думаю, что это корень проблемы. Также проверьте, что ваша лицензия действительна, и что ваши "привязки" не были возвращены в FS из-за отсутствия / истечения срока действия лицензии на компакт-диск.
В качестве дополнительной информации для других я также испытывал "Невозможно получить желаемые результаты". ответ, и в моем случае это произошло из-за того, что мой cd_licenses.xml не находится в каталоге bin/config вместе с другими файлами конфигурации.