Hi All,
I am using felix scr annotations.
Sling servlet working fine for xml extension but not for txt extension.
Attaching servlet code for reference
@service()
@SlingServlet(resourceTypes = "/apps/test/components/page/blankpage",
selectors = "301",
extensions = "txt",
methods = "GET",
metatype =true)
public class TestServlet extends SlingSafeMethodsServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(TestServlet.class);
@Override
protected void doGet(final SlingHttpServletRequest req,
final SlingHttpServletResponse resp) throws ServletException, IOException {
LOGGER.info("Entering doGet");
resp.setContentType("text/html");
resp.getWriter().println(response);
}
}
Any pointers is highly appreciated.
Gone through below link, not helped anymore.
Thanks,
Pradeep
Solved! Go to Solution.
Views
Replies
Total Likes
my suggestion would be not to use the SCR annotation becasue it is depricated now.
Please use the OSGI annotations.
org.osgi.service.component.annotations.Component;
@Component(service = Servlet.class, property = {
Constants.SERVICE_DESCRIPTION + "=JSON Servlet to read the data from the external webservice",
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/SimpleServlet"
})
public class SimpleServlet extends SlingSafeMethodsServlet {
Please use the below code:
@Component(service = Servlet.class, property = {"process.label=Some Servlet",
Constants.SERVICE_DESCRIPTION + "=Some Servlet"})
@@SlingServletResourceType(resourceTypes = "test/components/page/blankpage",
methods = HttpConstants.METHOD_GET,
extensions = "txt",
selectors = "something")
public class TestServlet extends SlingSafeMethodsServlet {
//Rest of code
}
Here is a detailed exampale with video:
http://www.sgaemsolutions.com/2017/12/apache-sling-servlets-and-scripts.html
Make sure the resource you are accessing has the sling:resourceType as "test/components/page/blankpage".
Let's say you are accessing /content/mywebsite/abc/jcr:content.something.txt then abc page jcr:content should have the above property as sling:resourceType
Hope this will help!
Thanks
OSGi DS 1.4 (R7) component property type annotations for Sling Servlets uses @SlingServletResourceTypes
Need to add the below dependency:
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.servlets.annotations</artifactId>
<version>1.2.4</version>
</dependency>
Please see link below:
https://sling.apache.org/documentation/the-sling-engine/servlets.html
Thanks
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Hi @pradeepd1320668,
Can you please use the latest OSGI declarative services annotations [R7] annotations like this:
@Component(service = Servlet.class,
property = {
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.resourceTypes=" + ADD THE RESOURCE TYPE,
"sling.servlet.selectors=ADD SELECTORS",
"sling.servlet.extensions=txt",
"service.ranking:Integer=ADD THE RANKING"
})
Hope this helps!
Thanks,
Kiran Vedantam
my suggestion would be not to use the SCR annotation becasue it is depricated now.
Please use the OSGI annotations.
org.osgi.service.component.annotations.Component;
@Component(service = Servlet.class, property = {
Constants.SERVICE_DESCRIPTION + "=JSON Servlet to read the data from the external webservice",
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/SimpleServlet"
})
public class SimpleServlet extends SlingSafeMethodsServlet {
Here's an example of working code with
@component(service = { Servlet.class })
@SlingServletResourceTypes(
resourceTypes="/apps/my/type",
methods= "GET",
extensions="txt",
selectors="hello")
public class MyServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
...
}
}
txt:
I could not find @SlingServletResourceTypes annotation. Can you please share complete servlet code?
Views
Replies
Total Likes