I think cases where the service consumer doesn't need or want the provider code (e.g. small or embedded environments) is one such example.   In such cases a separate API can keep things smaller and less complicated on the consumer.

Scott

On 2/8/2018 12:54 PM, Peter Kriens via osgi-dev wrote:
I think there are only a few good cases where you really need an API bundle. 
Virtually cases I’ve seen in the wild were incorrect because they fudged the 
versions to make the API more backward compatible than it really was so more 
providers could leverage it. In very few cases can you have different providers 
for the same API version.

Exporting the API from the provider is usually the safest way imho and it works 
very well without extra metadata with resolving.

Kind regards,

        Peter Kriens


On 8 Feb 2018, at 21:01, Chris Gray via osgi-dev <osgi-dev@mail.osgi.org> wrote:

In my experience it is quite often handy to have a separate API bundle -
yours is one use case, another is where the system may run on different
platforms which require different implementations for some services (cloud
vs development machine, embedded vs dev, self-contained demo vs real
distributed system, ...). In fact in a way this is the "normal"
configuration, provider-exports is a convenience.

If the packages can be exported by both api bundle and provider then you
have to watch out for "uses" constraint violations if versions diverge,
Keep It Simple is the key here.

Have fun

Chris

I understand that with api compile only is not possible to run a remote
instance without the related provider bundle.

With a provider with conditional package I have to resolve both api and
provider bundle because api packages are only copied inside provider but
not exported.
So I don’t think that is better than having api and provider separated.

Now I’ve tried to modify my bundles in this way:
- api without compile only that export packages
- provider like before that export api packages

With this configuration I can:
- run an osgi instance resolving only provider bundle like before
- run another instance without the provider resolving only api bundle

Daniele


Da: David Daniel
Inviato: sabato 3 febbraio 2018 21:24
A: Dominik Przybysz; OSGi Developer Mail List
Cc: Daniele Pirola
Oggetto: Re: [osgi-dev] Api compile-only and remote services

I think different projects handle it differently.  The way I do it is if
only one provider loaded will implement the interface then I include the
interface in the provider with a conditional package and leave the api
compile only
http://enroute.osgi.org/tutorial_wrap/212-conditional-package.html  If
multiple providers are going to implement the interface then I will change
the api bundle to a regular bundle to inclusion.
David

On Sat, Feb 3, 2018 at 2:35 PM, Dominik Przybysz via osgi-dev
<osgi-dev@mail.osgi.org> wrote:
Hi,
if you know that you may run your bundles in distributed environment and
want to use Remote Services, your API bundles must be normal bundles.

2018-02-03 19:12 GMT+01:00 Daniele Pirola via osgi-dev
<osgi-dev@mail.osgi.org>:
Hi,
I have an Osgi workspace with many bundles with different "types": api,
provider and application. I follow enroute tutorials and my api bundles
are "compile only" and providers export api packages.
Now I would like to use osgi remote services but how can I use api
packages in different osgi instances without importing also the provider
that export these packages? I have to build another api project that only
export packages? Or api "compile only" is not the right thing for remote?

Kind regards
Daniele



_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev




--
Pozdrawiam / Regards,
Dominik Przybysz

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev



Mail priva di virus. www.avg.com
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev


_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to