刚入职,要求在AEM(Adobe Experience Manager)上写一个OauthAuthenticationServlet,之前从来没有用过AEM,想着先写个简单的“Hello World”试试,代码如下
@SlingServlet(paths={"/bin/fid/test01"},methods={"GET"})
public class OauthAuthServlet extends SlingSafeMethodsServlet {
protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response) throws ServletException, IOException{
response.getWriter().write("Hello World");
}
}
第一个用POSTMAN测试的时候没有问题,发送请求之后会返回“Hello World”在POSTMAN response区域。然后我想测试一下传参,并且把代码改成如下这样,
@SlingServlet(paths={"/bin/fid/test01"},methods={"GET"})
public class OauthAuthServlet extends SlingSafeMethodsServlet {
protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response) throws ServletException, IOException{
String Data = request.getParameter("Data");
response.getWriter().write(data);
}
}
这次用POSTMAN测试时,我用form-data传入了一个参数KEY=Data,VALUE=testData,但是没有任何的response返回,而且状态码显示“404 Not Found”。我查了一下log, AEM出现了一个这样的错误
org.apache.jackrabbit.oak.query.RuntimeNodeTraversalException: The query read or traversed more than 100000 nodes. To avoid affecting other tasks, processing was stopped.
我试着把代码改回去再运行,这次连”Hello World“都不显示了。并且再次出现了这个”RuntimeNodeTraversalException“错误。
有没有大神能够帮忙看看,非常感谢!
把报错复制出来发给我
我发现这里的问题是servlet代码没有再CRXDE里面激活,AEM找不到相关的路径所以报错,激活一下代码应该就可以。正在学习如何激活代码。。。