Идеи о возможных причинах для двух экземпляров AEM для разрешения URL с другим сервлетом?
У меня есть два экземпляра AEM, один локальный и один на нашем компьютере разработчика, которые имеют одинаковый код, настройки и т. Д.
URL-адреса правильно разрешаются как пользовательские сервлеты, которые определяются путем. Однако на другом компьютере, который находится в среде клиента, URL-адреса разрешаются в DefaultSlingServlet. Я пытался выяснить, в чем могут быть различия между этой средой и другими, но я не выдвинул никаких идей, поскольку они имеют одну и ту же версию AEM 5.6.1, в которой используется тот же JDK, использующий тот же самый точный установочный комплект.
Конечная точка URL-адреса разрешается в наших пользовательских сервлетах в большинстве экземпляров AEM, но в качестве сервлета по умолчанию на компьютере, который находится в другом месте.
Мы попытались настроить сервлет для разрешения по пути, а также по resourceType, и с обоими подходами они отлично работают на первом наборе машин и на другом. Так что это не путь против ресурса в определении сервлета.
Кто-нибудь ударил это странное поведение? Я предполагаю, что это должно быть связано с настройками в разных средах, но пока не повезло в поиске различий.
Спасибо за любые идеи!
(Между прочим, когда я отправляю сообщение в нестандартный сервлет на неисправном компьютере, он сообщает об исключении PersistencException (если оно определено путем) или ConstraintViolationException (когда оно определено с помощью resourceType). Но этого следует ожидать, поскольку это сервлет по умолчанию, пытающийся сделать что-то с узлом, что ему запрещено делать)
2 ответа
Вы должны проверить, действительно ли служба сервлета зарегистрирована, используя консоль OSGi в / system / console / components и / или /system/console/services, и сравнить рабочие и нерабочие экземпляры.
Страница / system / console / запросы также может помочь, так как показывает, как отправляются запросы.
В худшем случае журналы уровня DEBUG должны помочь точно определить, как решаются сервлеты.
Как указал Бертран, ваши сервлеты не зарегистрированы в OSGi.
По умолчанию все ваши GET-запросы обрабатываются с помощью DefaultGetServlet, а все ваши POST-запросы переходят в SlingPOSTServlet (который дает исключения для постоянства при публикации).
Перейдите в консоль Felix и проверьте, развернуты ли сервлеты.
Также, если вы хотите увидеть, какой сервлет вызывается для какого-либо конкретного запроса, используйте инструмент распознавания сервлетов:
/ Система / консоль /servletresolver