Highlighted

Sling servlet txt extension not working with OSGi DS 1.2 annotations

tims19814439

02-01-2019

I am trying to create a servlet to serve a robots.txt. The servlet to handle this request is mapped on the website page resource and looks like this:

When I visit the page like this "/content/website.robots.txt" I am presented with an 404 error and the get of the servlet is never called.

When I change "sling.servlet.extensions" to xml and visit "/content/website.robots.xml" the get gets called and the servlet works.

I am using AEM 6.2 with OSGI 6.0.0

Is it impossible to map to .txt as extension or am I doing something wrong ?

Replies

Highlighted

Gaurav-Behl

MVP

02-01-2019

Turn on 'Enable Plain Text' option on 'Apache Sling GET Servlet' in configMgr since you are using METHOD_GET and test if it works.

Highlighted

Jörg_Hoh

Employee

03-01-2019

It seems to me that you are using the Felix SCR annotations. In that case you need to add the

@Service()

annotation to the class definition as well (no additional parameters required). That should do the trick.

Highlighted

tims19814439

03-01-2019

This unfortunately just makes it possible for the default GET servlet to handle the request. However I would like my own servlet to handle the request.

Highlighted

tims19814439

03-01-2019

I'm actually using the OSGI component annotation the felix annotations are not available in the 6.2 architype I'm using

Highlighted

Jörg_Hoh

Employee

03-01-2019

Hm, correct... I wonder why I was thinking that you are using the SCR ones ... 😕

Can you post the the generated xmls in target/classes/OSGI-INF for this class?

And btw the resource type is just "webstie/components/structure/websitepage"; the resource type is normally never the full path to the component.

Highlighted

tims19814439

03-01-2019

Thanks for your answer Arun Patidar​. At this point I don't really want to switch the whole interface to a sling filter so I will just map to .xml and rewrite from .txt to .xml in apache.

Thanks for your help everyone!