AEM - ресурс сервлета не найден - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в AEM и пытаюсь подключиться к сервлету в пакете проекта AEM, который я установил в новом экземпляре AEM.

Похоже, сервлет не может быть найден или путь не может быть найденным для сервлета и дважды проверил отображение, но я потерян к тому, что еще я могу посмотреть Любая помощь будет принята с благодарностью!

Sling Mapping

<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="sling:Mapping"
sling:internalRedirect="content/dam/test.$1.json"
sling:match="aem.test.com.4545/api/assets/v1/(.*)"/>

Информация о сервлете

`@Component(service = Servlet.class,
        property = {
                Constants.SERVICE_DESCRIPTION + "=Get Job Folder Info API",
                "sling.servlet.methods=" + HttpConstants.METHOD_POST,
                "sling.servlet.resourceTypes=" + "sling/servlet/default",
                "sling.servlet.selectors=" + "jobFolderInfo",
                "sling.servlet.extensions=" + APIConstants.JSON_EXTENSION_TYPE
        })
public class JobFolderInfoServlet extends SlingAllMethodsServlet {`

Журнал ошибок из запроса

0 TIMER_START {Обработка запроса}

1 Формат COMMENT timer_end равен { , }

6 Метод LOG = POST, PathInfo = null

7 TIMER_START {handleSecurity}

1645 TIMER_END {1636, handleSecurity} аутентификатор org. apache .sling.auth. core.impl. SlingAuthenticator@5f62558d возвращает true

1876 TIMER_START {ResourceResolution}

3112 TIMER_END {1234, ResourceResolution} URI = / api / assets / v1 / jobFolderInfo преобразуется в Resource = NonExistingResource, путь = / apps / content / dam / test.jobFolderInfo. json

3119 LOG Информация о пути к ресурсам: SlingRequestPathInfo: path = '/ apps / content / dam / test.jobFolderInfo.json', selectorString = 'jobFolderInfo ', расширение =' json ', суффикс =' null '

3119 TIMER_START {ServletResolution}

3122 TIMER_START {resolServlet (/apps/content/dam/test.jobFolderInfo.json) }

3853 TIMER_END {730, resolServlet (/apps/content/dam/test.jobFolderInfo.json)} Использование сервлета com.test.assets.api.servlets.JobFolderInfoServlet

3856 TIMER_END {736, ServletResolution} URI = / api / assets / v1 / jobFolderInfo, обработанный сервлетом = com.test.assets.api.servlets.JobFolderInfoServlet

3860 LOG Применение фильтров запросов

3864 LOG Фильтр вызова: com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Рекомендуется регистрировать сервлет на resourceType, а не на пути, чтобы иметь возможность ограничить доступ к вашему сервлету.

https://helpx.adobe.com/experience-manager/using/resourcetypes.html

SlingServlet(methods = {"GET"},
metatype = true,
resourceTypes = {"services/powerproxy"},
selectors = {"groups"})
public class HandleClaim extends org.apache.sling.api.servlets.SlingAllMethodsServlet 
0 голосов
/ 19 марта 2020

Если я правильно понимаю, вы пытаетесь подключиться к сервлету, используя URL-адрес, например localhost:4502/bin/your-servlet-path, из браузера. Если это так, зарегистрируйте сервлет, используя путь. В приведенном выше коде сервлета вы зарегистрировались, используя тип ресурса.

Для регистрации по пути используйте sling.servlet.paths=/bin/your-servlet-path

Здесь - это ссылка, которая поможет вам лучше понять регистрацию сервлета .

Надеюсь, это поможет !!!

...