- Does bundle:headers for the REST bundle have a required capability to the 
Person Service, foo.bar.PersonService in the example below.

karaf@root> bundle:headers <REST_bundle_id>
...
Require-Capability = 
        
osgi.service;effective:=active;filter:=(objectClass=foo.bar.PersonService),
...

karaf@root> 


My assumption is the requirement is missing, meaning the requirement in the 
REST bundle is not defined correctly.

Paul Spencer
 

> On Jan 23, 2023, at 5:44 PM, Jaap Gordijn <[email protected]> wrote:
> 
> Paul,
> 
> - scr is installed and started
> - the person bundle started
> - diag does not produce any output
> 
> Best,
> 
> -- Jaap
> 
>> -----Original Message-----
>> From: Paul Spencer <[email protected]>
>> Sent: maandag 23 januari 2023 23:12
>> To: [email protected]
>> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect works not
>> with DS
>> 
>> 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