Jaap,
1) What bundle provides PersonService and what is its state, as reported by 
bundle:list?
2) What is the state, as reported by bundle:list, of your REST bundle.

If any of the bundles are in a state of waiting, what does bundle:diag 
<bundle_id> of the waiting bundle report?

Is the feature scr installed, if not install it.

Paul Spencer


> On Jan 23, 2023, at 3:38 PM, Jaap Gordijn <[email protected]> wrote:
> 
> Paul,
> 
> I have now minimized the code that I call via REST:
> 
>       @Reference(scope=ReferenceScope.PROTOTYPE_REQUIRED)
>       private PersonService personService;
> 
>       @GET
>       @Path("/test")
>       public String test() {
>               System.out.println("personService null" + (personService == 
> null));
>               return "test"; 
>       }
> 
> The personService remains null, so no DI.
> 
> I enabled DEBUG in the log.
> 
> I only see DEBUG messages for " org.eclipse.jetty.util".
> Not for anything else.
> 
> Nevertheless, feature:list | grep jax
> Results in:
> 
> aries-jax-rs-whiteboard                 │ 2.0.2            │          │ 
> Started     │ aries-jax-rs-2.0.2                │
> aries-jax-rs-whiteboard-jackson         │ 2.0.2            │          │ 
> Started     │ aries-jax-rs-2.0.2                │
> aries-jax-rs-whiteboard-jettison        │ 2.0.2            │          │ 
> Uninstalled │ aries-jax-rs-2.0.2                │
> aries-jax-rs-whiteboard-openapi         │ 2.0.2            │          │ 
> Uninstalled │ aries-jax-rs-2.0.2                │
> aries-jax-rs-whiteboard-rest-management │ 2.0.2            │          │ 
> Uninstalled │ aries-jax-rs-2.0.2                │
> aries-jax-rs-whiteboard-shiro           │ 2.0.2            │          │ 
> Uninstalled │ aries-jax-rs-2.0.2                │
> jaxb                                    │ 2.3.2.3          │          │ 
> Uninstalled │ specs-4.4.3                       │
> jaxrs                                   │ 2.1.0            │          │ 
> Uninstalled │ specs-4.4.3                       │
> jaxws                                   │ 2.3.0            │          │ 
> Uninstalled │ specs-4.4.3                       │
> jackson-jaxrs                           │ 2.14.1           │          │ 
> Uninstalled │ specs-4.4.3                       │
> cxf-jaxb                                │ 3.5.5            │          │ 
> Uninstalled │ cxf-3.5.5                         │
> cxf-jaxws                               │ 3.5.5            │          │ 
> Uninstalled │ cxf-3.5.5                         │
> cxf-jaxrs                               │ 3.5.5            │          │ 
> Started     │ cxf-3.5.5                         │
> cxf-databinding-jaxb                    │ 3.5.5            │          │ 
> Uninstalled │ cxf-3.5.5                         │
> cxf-jaxrs-cdi                           │ 3.5.5            │          │ 
> Uninstalled │ cxf-3.5.5                         │
> karaf@root()>                                                               
> 
> This gives me the impression that the whitenboard stuff is working.
> 
> -- Jaap
> 
>> -----Original Message-----
> 
> 
>> From: Paul Spencer <[email protected]>
>> Sent: maandag 23 januari 2023 21:19
>> To: [email protected]
>> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect works not
>> with DS
>> 
>> Jaap,
>> Something is missing.  The @Referenece should prevent the component
>> from becoming Active when a PeopleService does not exist.
>> Look in Karaf.log for clues.
>> 
>> Paul Spencer
>> 
>>> On Jan 23, 2023, at 3:14 PM, Jaap Gordijn <[email protected]> wrote:
>>> 
>>> Paul,
>>> 
>>> I tried also the @Reference annotation.
>>> This doesn't work, the variable remains null.
>>> No injection is happening.
>>> 
>>> -- Jaap
>>> 
>>>> -----Original Message-----
>>>> From: Paul Spencer <[email protected]>
>>>> Sent: maandag 23 januari 2023 21:09
>>>> To: [email protected]
>>>> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect
>>>> works not with DS
>>>> 
>>>> Jaap,
>>>> In the code I posted, there was not constructor.  I moved the
>>>> injection of personService to an @Reference annotated field.  The
>>>> @Activator annotation is for a method, which you may not need based on
>> your example.
>>>> 
>>>> Paul Spencer
>>>> 
>>>> 
>>>>> On Jan 23, 2023, at 2:30 PM, Jaap Gordijn <[email protected]> wrote:
>>>>> 
>>>>> 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