Btw, if that's not sufficient, i.e. if some people have a need for
disabling only specific feature, please raise  a JIRA and I can add the
flag on the repository / feature definition for 4.1.

Guillaume

2016-08-31 16:14 GMT+02:00 Guillaume Nodet <gno...@apache.org>:

> You can always disable service requirements globally by setting
>   serviceRequirements = disable
> in the etc/org.apache.karaf.features.cfg config file.
>
>
> 2016-08-31 15:34 GMT+02:00 Jean-Baptiste Onofré <j...@nanthrax.net>:
>
>> Hi Benson,
>>
>> I agree: we had a long discussion with Guillaume about that in the past ;)
>>
>> As a workaround, you can use the feature capability definition (and it
>> can be done at runtime using feature:* commands). So your DS components
>> don't have to change.
>>
>> Regards
>> JB
>>
>>
>> On 08/31/2016 03:30 PM, Benson Margulies wrote:
>>
>>> Gentlemen,
>>>
>>> Thank you very much for the help. I want to offer a small argument for
>>> an option to turn all this off in a CFG file, before I get to work
>>> using the solutions you've offered.
>>>
>>> One of the virtues of DS is that you can mix-and-match: a DS component
>>> can transparently use non-DS services. This resolver feature disables
>>> that nice transparency by requiring any service used in a DS component
>>> to be accounted for in a Provide-Capability. So you might accept the
>>> proposition that this resolver enforcement is not so good for
>>> everyone.
>>>
>>> --benson
>>>
>>>
>>>
>>>
>>> On Wed, Aug 31, 2016 at 6:13 AM, Guillaume Nodet <gno...@apache.org>
>>> wrote:
>>>
>>>>
>>>>
>>>> 2016-08-31 15:00 GMT+02:00 Benson Margulies <ben...@basistech.com>:
>>>>
>>>>>
>>>>> On Wed, Aug 31, 2016 at 5:50 AM, Jean-Baptiste Onofré <j...@nanthrax.net
>>>>> >
>>>>> wrote:
>>>>>
>>>>>> So, I will explain a new time (for the third time ;)).
>>>>>>
>>>>>
>>>>> JB,
>>>>>
>>>>> I apologize for not being awake when this came through before.
>>>>>
>>>>> I just want to make sure that I am completely following this. The
>>>>> resolver is requiring that some bundle mentions the service in a
>>>>> Provide-Capability -- NOT that the service is actually running?
>>>>>
>>>>
>>>>
>>>> The resolver looks at the bundle manifest. It runs before they are
>>>> installed
>>>> / started, so it can't really look at if they are running or not.
>>>>
>>>>
>>>>>
>>>>> The service in question is provided by an 'old' OSGi bundle that does
>>>>> not bother to do a Provide-Capability for it; it's not a service, just
>>>>> a service launched the old-fashioned way.
>>>>>
>>>>> Is there some thread you can point me to that offers suggestions for
>>>>> dealing with this? I would rather not have to go add
>>>>> Provide-Capability manifest entries for all my dynamically created
>>>>> OSGi services. Is there an option in a cfg file or a feature.xml that
>>>>> turns this back off?
>>>>>
>>>>
>>>>
>>>> This could be done for karaf 4.1 with a new xsd.
>>>>
>>>>
>>>>>
>>>>> Perhaps I can persuade BND not to list them as requirements.
>>>>>
>>>>
>>>>
>>>> Yeah, that's definitely the easiest way, you can easily remove the
>>>> Require-Capability header, or disable the service requirements,
>>>> depending on
>>>> how they are generated.
>>>>
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> benson
>>>>>
>>>>>
>>>>>
>>>>>> When you are using features XML with namespace 1.3 or 1.4, the feature
>>>>>> resolver uses the service enforcement. It means that it checks the
>>>>>> service
>>>>>> capability in the bundles. The service requirement is basically a
>>>>>> bundle
>>>>>> that needs a service "A" at runtime. So the resolver will check the
>>>>>> features
>>>>>> containing the bundle providing such capability (exposing the
>>>>>> service).
>>>>>> It's
>>>>>> what the effective:=active mean.
>>>>>>
>>>>>> The corresponding MANIFEST header is:
>>>>>>
>>>>>> <Provide-Capability>
>>>>>> osgi.service;effective:=active;objectClass=myService
>>>>>> </Provide-Capability>
>>>>>>
>>>>>> On the other hand, the requirement header looks like:
>>>>>>
>>>>>> <Require-Capability>
>>>>>> osgi.service;effective:=active;filter:="(objectClass=aService)"
>>>>>> </Require-Capability>
>>>>>>
>>>>>>
>>>>>> Unfortunately, in Karaf 4.0.3, 4.0.4, 4.0.5, the service enforcement
>>>>>> was
>>>>>> enabled for features xmlns 1.3.0 NOT for 1.4.0 (it was a bug). This
>>>>>> bug
>>>>>> has
>>>>>> been fixed in Karaf 4.0.6. That's why when you upgraded from 4.0.4 to
>>>>>> 4.0.6,
>>>>>> the feature resolver is now "active" for your features XML and check
>>>>>> the
>>>>>> service enforcement.
>>>>>>
>>>>>> Regards
>>>>>> JB
>>>>>>
>>>>>>
>>>>>> On 08/31/2016 02:31 PM, Benson Margulies wrote:
>>>>>>
>>>>>>>
>>>>>>> I just tried the experiment of moving our platform from 4.0.4 to
>>>>>>> 4.0.6, changing nothing but the karaf version. I received in return a
>>>>>>> resolution error that I've never seen the like of before, complaining
>>>>>>> that a particular service is missing with 'effective:=active'.
>>>>>>>
>>>>>>> Since Karaf does not come to command level when this sort of thing
>>>>>>> goes wrong, it is not obvious to me how to gain any insight into what
>>>>>>> is wrong. The service reference itself is very strange;
>>>>>>> 'RosetteBundleWarmup' a DS reference like:
>>>>>>>
>>>>>>> @Reference(target = "(component-name=name-matching)")
>>>>>>> public void setWarmup(RosetteBundleWarmup warmup) {
>>>>>>>     this.componentWarmup = warmup;
>>>>>>> }
>>>>>>>
>>>>>>> and I don't see the component-name filter in the error message. It's
>>>>>>> also new to me that DS @Reference is even visible to resolution at
>>>>>>> the
>>>>>>> time that boot features are being resolved.
>>>>>>>
>>>>>>>
>>>>>>> 2016-08-31 08:25:36,304 | ERROR | pool-6-thread-1  |
>>>>>>> BootFeaturesInstaller            | 6 - org.apache.karaf.features.core
>>>>>>> - 4.0.6 | Error installing boot features
>>>>>>> org.osgi.service.resolver.ResolutionException: Unable to resolve
>>>>>>> root:
>>>>>>> missing requirement [root] osgi.identity;
>>>>>>> osgi.identity=rosapi-all-sdks; type=karaf.feature;
>>>>>>> version="[1.2.6.SNAPSHOT,1.2.6.SNAPSHOT]";
>>>>>>>
>>>>>>>
>>>>>>> filter:="(&(osgi.identity=rosapi-all-sdks)(type=karaf.featur
>>>>>>> e)(version>=1.2.6.SNAPSHOT)(version<=1.2.6.SNAPSHOT))"
>>>>>>> [caused by: Unable to resolve rosapi-all-sdks/1.2.6.SNAPSHOT:
>>>>>>> missing
>>>>>>> requirement [rosapi-all-sdks/1.2.6.SNAPSHOT] osgi.identity;
>>>>>>> osgi.identity=rosapi-worker-rni-rnt-sdk; type=karaf.feature [caused
>>>>>>> by: Unable to resolve rosapi-worker-rni-rnt-sdk/1.2.6.SNAPSHOT:
>>>>>>> missing requirement [rosapi-worker-rni-rnt-sdk/1.2.6.SNAPSHOT]
>>>>>>> osgi.identity;
>>>>>>> osgi.identity=com.basistech.ws.rosapi-worker-rni-rnt-sdk;
>>>>>>> type=osgi.bundle;
>>>>>>> version="[1.2.6.v20160831122227,1.2.6.v20160831122227]";
>>>>>>> resolution:=mandatory [caused by: Unable to resolve
>>>>>>> com.basistech.ws.rosapi-worker-rni-rnt-sdk/1.2.6.v20160831122227:
>>>>>>> missing requirement
>>>>>>> [com.basistech.ws.rosapi-worker-rni-rnt-sdk/1.2.6.v20160831122227]
>>>>>>> osgi.service;
>>>>>>> filter:="(objectClass=com.basistech.rosette.osgi.RosetteBund
>>>>>>> leWarmup)";
>>>>>>> effective:=active]]]
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Jean-Baptiste Onofré
>>>>>> jbono...@apache.org
>>>>>> http://blog.nanthrax.net
>>>>>> Talend - http://www.talend.com
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ------------------------
>>>> Guillaume Nodet
>>>> ------------------------
>>>> Red Hat, Open Source Integration
>>>>
>>>> Email: gno...@redhat.com
>>>> Web: http://fusesource.com
>>>> Blog: http://gnodet.blogspot.com/
>>>>
>>>>
>> --
>> Jean-Baptiste Onofré
>> jbono...@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>
>
>
> --
> ------------------------
> Guillaume Nodet
> ------------------------
> Red Hat, Open Source Integration
>
> Email: gno...@redhat.com
> Web: http://fusesource.com
> Blog: http://gnodet.blogspot.com/
>
>


-- 
------------------------
Guillaume Nodet
------------------------
Red Hat, Open Source Integration

Email: gno...@redhat.com
Web: http://fusesource.com
Blog: http://gnodet.blogspot.com/

Reply via email to