Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

difference between @slingServlet vs Felix scr annotation vs OSGI DS

Avatar

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

Avatar

Correct answer by
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

Avatar

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?

Avatar

Correct answer by
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