Hi all,
I have been created the AEM project with -DarchetypeVersion=11 and create the first servlet demo like below:
I try to get the result by enter http://localhost:4502/my-demo/servlet but the resource is not found. Please advise me
Solved! Go to Solution.
Views
Replies
Total Likes
See this article - we cover that here: Creating a Mail List Sign Up Component for the Experience Manager Toy Store Site
The reason why I pointed you to this article is because you wanted to know why @SlingServlet did not work.
An important aspect to notice is the change on how an AEM Servlet is created. There is no longer @Service or @SlingServlet annotations in the org.osgi.service.component.annotations package.
In Maven Archetype 10 project, you defined a servlet like this:
@SlingServlet(paths="/bin/mySearchServlet", methods = "POST", metatype=true)
public class HandleClaim extends org.apache.sling.api.servlets.SlingAllMethodsServlet {
private static final long serialVersionUID = 2598426539166789515L;
However, in a Maven Archetype 11 project., you define an AEM Servlet like this (there is no @SlingServlet annotation):
@Component(service=Servlet.class,
property={
Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.paths="+ "/bin/myDataSourcePoolServlet"
})
Views
Replies
Total Likes
should you not have: "/my-demo/servlet". to me you are missing the first /
Views
Replies
Total Likes
Thanks for your reply. I try to add "/" and the issue still happens. but I add bin/my-demo/servlet, I can get th result. Could you please tell me why put the 'bin' on paths ?
Views
Replies
Total Likes
See this article - we cover that here: Creating a Mail List Sign Up Component for the Experience Manager Toy Store Site
The reason why I pointed you to this article is because you wanted to know why @SlingServlet did not work.
An important aspect to notice is the change on how an AEM Servlet is created. There is no longer @Service or @SlingServlet annotations in the org.osgi.service.component.annotations package.
In Maven Archetype 10 project, you defined a servlet like this:
@SlingServlet(paths="/bin/mySearchServlet", methods = "POST", metatype=true)
public class HandleClaim extends org.apache.sling.api.servlets.SlingAllMethodsServlet {
private static final long serialVersionUID = 2598426539166789515L;
However, in a Maven Archetype 11 project., you define an AEM Servlet like this (there is no @SlingServlet annotation):
@Component(service=Servlet.class,
property={
Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.paths="+ "/bin/myDataSourcePoolServlet"
})
Views
Replies
Total Likes
Thanks for this article...To resolved the issue above, I change the "/my-demo/servlet" to "bin/my-demo/servlet". But why must we start with "bin" on paths, I continue to research. Thanks all
Views
Replies
Total Likes
You need to whitelist the path, bin is already done.
Should be in the logmessages too
Views
Replies
Total Likes
Do we have an an article to introduce how to create the whitelist of path?
Views
Replies
Total Likes
We have a FAQ on setting a whitelist for an OSGi that lets you set a service that uses admin creds. See this blog. Scott's Digital Community: Adobe Experience Manager FAQs and other Tips
there is a whitelist setting under Configurations. See the FAQ. Search whitelist in the blog item.
Views
Replies
Total Likes
thank you so much!
Views
Replies
Total Likes