Hi Paul,

That constructor is called, but only if I disable @@JaxrsApplicationSelect.

If I enable it, only the default constructor is called (Rest() in my case.
And no DS.

-- Jaap

> -----Original Message-----
> From: Paul Spencer <[email protected]>
> Sent: maandag 23 januari 2023 18:59
> To: [email protected]
> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect works not
> with DS
> 
> Jaap,
> Your @Activate annotation is incorrect.
> Try the following.
> 
> 
> …
> public class Rest() {
> 
>     @Reference
>     private PersonService personService;
> 
>     @Activate
>     public void activate(Map <String,?> properties) {
>     ...
>     }
> 
> }
> 
> Paul Spencer
> 
> 
> > On Jan 23, 2023, at 12:40 PM, Jaap Gordijn <[email protected]> wrote:
> >
> > Hi,
> >
> > I use an Application object (with @JaxrsApplicationSelect), injection
> > via DS does not work:
> >
> > @Component(service = Rest.class, scope = ServiceScope.PROTOTYPE)
> > @JaxrsResource @JaxrsApplicationSelect("(" +
> > JaxrsWhiteboardConstants.JAX_RS_NAME +
> > "=MyApplication)")
> > @JSONRequired
> > @Produces(MediaType.APPLICATION_JSON)
> > public class Rest {
> >
> >   private PersonService personService;
> >
> >   /*
> >    public Rest() {
> > System.out.println("Constructing REST");
> >     this.personService = new PersonServiceImpl();
> >     }
> >   */
> >
> >    @Activate
> >    public Rest(final @Reference PersonService personService) {
> > System.out.println("Constructing REST");
> >     this.personService = personService;
> >    }
> >
> >    @GET
> >    @Path("/person")
> >    public List<PersonDto> listPersons() {
> >      return personService.select();
> >   }
> >
> >   @GET
> >   @Path("/test")
> >   public String test() {
> >     return "test";
> >   }
> > }
> >
> > The @Activate constructor is not called. If I enable the Rest()
> > constructor that one is called.
> > if I disable @JaxrsApplicationSelect, the personService is injected.
> >
> > It seems that once an Application class is used (see below), DS is not
> > working.
> > This leads to the question what I have to set up for the Application object:
> >
> > @Component(service=Application.class, property =
> > {"servlet.init.hide-service-list-page=true"} )
> > @JaxrsApplicationBase("example")
> > @JaxrsName("MyApplication")
> > public class MyApplication extends Application {
> >
> >  public Set<Class<?>> getClasses() {
> >      HashSet<Class<?>> set = new HashSet<Class<?>>();
> >      set.add(Rest.class);
> >      return set;
> >   }
> >
> > }
> >
> > Jax-rs-whiteboard 2.02
> > Karaf 4.4.3
> >
> > Thanks,
> >
> > -- Jaap
> >
> >


Reply via email to