How Can I call a Service in Servlet | Community
Skip to main content
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Asutosh_Jena_
Asutosh_Jena_Accepted solution
New Participant
Mar 23, 2021 10:12 AM UTC

Hi @ashwinikhaple 

Please see below:

 

public class MyServlet extends SlingAllMethodsServlet {

private static final long serialVersionUID = 1L;

@Reference
private transient MyService myservice;

@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {

myservice.anything();

}
}

 

https://sling.apache.org/documentation/the-sling-engine/servlets.html

 

Hope this helps!
Thanks!

7 replies

Ankur_Khare
New Participant
Mar 23, 2021 10:39 AM UTC

Kindly use like below-

 

@3214626
private transient ApiService apiService;

 

 

Translate
Bhuwan_B
New Participant
Mar 23, 2021 10:39 AM UTC
Asutosh_Jena_
Asutosh_Jena_Accepted solution
New Participant
Mar 23, 2021 10:12 AM UTC

Hi @ashwinikhaple 

Please see below:

 

public class MyServlet extends SlingAllMethodsServlet {

private static final long serialVersionUID = 1L;

@Reference
private transient MyService myservice;

@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {

myservice.anything();

}
}

 

https://sling.apache.org/documentation/the-sling-engine/servlets.html

 

Hope this helps!
Thanks!

Translate
Rohit_Utreja
New Participant
Mar 23, 2021 10:03 AM UTC

Hi, @ashwinikhaple,

 

If you are using SCR annotation, you can use @Reference annotation to inject the service into the servlet.

Something similar to this.

@Reference
MyService service;

You can refer to the below thread for more details.

https://stackoverflow.com/questions/56732548/aem-6-4-x-osgi-servlet-how-to-access-an-osgi-service-from-a-servlet

 

 If you are using R6 annotation, Please refer to below URL for the same.

http://www.nateyolles.com/blog/2017/05/osgi-declarative-services-annotations-in-aem

 

Translate
Level 2
Mar 23, 2021 10:18 AM UTC

Hello @rohit_utreja Thank you for the reply. I have created servlet below how can I call MyService here?

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;

@Component(service = Servlet.class,
property={
Constants.SERVICE_DESCRIPTION + "=My Servlet",
"sling.servlet.paths="+ "/bin/demotraining/mypath"
})
public class MyServlet extends SlingSafeMethodsServlet
{

/**
*
*/
private static final long serialVersionUID = 3444770797464227100L;
MyService ms=new MyServiceImpl();

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException
{
response.setHeader("Content-Type","text/html");
response.getWriter().print("<h1>Sample content using Sling servlet </h1>");
response.getWriter().print("<h2>My SlingServlet is registered using servlet path</h2>");
response.getWriter().close();
}
}

Translate