Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

difference between @slingServlet vs Felix scr annotation vs OSGI DS

sandeshb6678015
Level 1
Level 1

I have been reading through the documentation and confused as to when to use @slingServlet vs Felix scr annotation vs OSGI  DS. 

In one of the tech documents i read that OSGI DS is the newer standard and should be used instead of Felix scr anotation , but I could not link the @slingServlet  ?

Are these 3 different ways of creating OSGi components ? or something else ?

When do we use @slingServlet  ?

1 Accepted Solution
smacdonald2008
Correct answer by
Level 10
Level 10

You basic confusion is there are two main packages that define annotations.

org.osgi.service.component.annotations.Component

org.apache.felix.scr.annotations.Component

For example, the @Component annotation used in Maven Archetype 10 was org.apache.felix.scr.annotations.Component

Now the @Component Annotation used in Maven Archetype 11 is org.osgi.service.component.annotations.Component;

There are quite a few significant changes. For example, there is no longer @Service or @SlingServlet annotations in org.osgi.service.component.annotations.

In Maven Arch 10 project - we could 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;

In Maven Arch 11 – we define a servlet like this – 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"

           })

Read this article written by Feike:

Learn about the Annotations in the org.osgi.service.component.annotations package

View solution in original post

4 Replies
sandeshb6678015
Level 1
Level 1

Hi kautuk

Thanks for your response, but I did refer to -  Nate's article before posting this message and it did clarify  some question , however I see 3 nomenclature , one for each  :

  • OSGI DS
  • Felix SCR
  • SlingServlet

I understand the relation between DS and Felix SCR, but I dont understand how SlingServlet fits in?

smacdonald2008
Correct answer by
Level 10
Level 10

You basic confusion is there are two main packages that define annotations.

org.osgi.service.component.annotations.Component

org.apache.felix.scr.annotations.Component

For example, the @Component annotation used in Maven Archetype 10 was org.apache.felix.scr.annotations.Component

Now the @Component Annotation used in Maven Archetype 11 is org.osgi.service.component.annotations.Component;

There are quite a few significant changes. For example, there is no longer @Service or @SlingServlet annotations in org.osgi.service.component.annotations.

In Maven Arch 10 project - we could 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;

In Maven Arch 11 – we define a servlet like this – 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"

           })

Read this article written by Feike:

Learn about the Annotations in the org.osgi.service.component.annotations package

View solution in original post