karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Markus Rathgeb <maggu2...@gmail.com>
Subject Re: Johnzon JSON-B on OSGi
Date Mon, 16 Sep 2019 05:00:12 GMT
Hi JB,

thanks for your reply.

About your comment that you don't understand why people would like to
use OSGi bundles if possible instead of import stuff into private

Isn't one thing we prefer in OSGi that we program / compile against an
API instead of a specific implementation?
I would like to move from Jackson, Gson, Johnzon Mapper usage (hard
dependency because using that specific implementation) to JSON-P
(JSR-353) and JSON-B (JSR-367).
Doesn't it make sense (for you) to such an official standard?

After more and more bundles (of mine) will be migrated to e.g. JSON-B
I would like to use JSON-B in my OSGi environments easily.
Just state that there must be such an implementation available at runtime.

Is this wrong?
Isn't that exactly what has been chosen for the reference
implementation of the Configurator by Apache Felix?
They didn't embed an JSON-P implementation in the configurator bundle
but an implementation of our choose can be used at runtime.

johnzon-jsonb already contains the OSGi related headers in its
manifest I just want to get it working.
I already created a fake bundle that just tell the runtime it would
provide the requested capability (without providing it).
This works at the moment as it seems no-one really needs the requested
(I have to use a bundle instead of a feature because it should work in
Karaf and inside any other OSGi runtime that does not know about Karaf
specific stuff e.g. features).

Wouldn't it be better to get / "know" the correct bundle set to get it
working and perhaps create some PRs to get it working everywhere
instead of fixing it downstream on my side only?

I will provide the specific messages later.
AFAIK servicemix already provides some API bundles (for other APIs)
that differ between the plain API bundles as the servicemix ones
contains a serviceloader and that manifest entries.

Best regards,

Am So., 15. Sept. 2019 um 19:19 Uhr schrieb Jean-Baptiste Onofré
> First, you can also embed Johnzon as private package in your bundle,
> that's probably the easiest way.
> All is not necessary bundle and import in OSGi ! I don't understand why
> the users systematically wants bundles/imports for everything ;)
> Anyway, can you share exactly the message ? The missing is not a bundle,
> it's a capability (service.loader). It's something you can add in a
> feature for instance.
> What I propose to you is to create a features for that.
> Regards
> JB
> On 15/09/2019 12:20, Markus Rathgeb wrote:
> > Hi,
> >
> > I posted my problem already to the Johnzon mailing list and have been
> > told to ask the Karaf team. So please let me ask you (this should be
> > no cross posting).
> > See: https://lists.apache.org/thread.html/b2134d2002738d33a57a329966ef38563372613502947158358092fa@%3Cdev.johnzon.apache.org%3E
> >
> > I am not really sure if Karaf is using Johnzon. The current master
> > source tree only finds the usage of johnzon-core and johnzon-mapper on
> > an camel demo / example and it uses a rather old version (0.95).
> > But as you "know" a lot of OSGi bundles you perhaps know which one
> > satisfy the respective requirements.
> >
> > Let me repeat the description of my problem:
> >
> > I would like to use johnzon-jsonb 1.1.12 in an OSGi container.
> >
> > After adding johnzon-jsonb I got:
> > osgi.wiring.package: (&(osgi.wiring.package=javax.json.bind))
> >
> > That's easy, we need the respective API bundle.
> > I added org.apache.geronimo.specs/geronimo-jsonb_1.0_spec/1.1
> >
> > johnzon-jsonb requires: osgi.contract: (&(osgi.contract=JavaCDI)(version=2.0.0))
> > I added org.apache.geronimo.specs/geronimo-jcdi_2.0_spec/1.1
> > This bundle provides the JavaCDI contract version 2.0.0
> >
> > The jcdi bundle requires: osgi.wiring.package: (&(osgi.wiring.package=javax.el))
> > I added org.apache.geronimo.specs/geronimo-el_2.2_spec/1.1
> >
> > The jcdi also requires: osgi.wiring.package:
> > (&(osgi.wiring.package=javax.inject))
> > I added org.apache.geronimo.specs/geronimo-atinject_1.0_spec/1.1
> >
> > The jcdi also requires: osgi.serviceloader:
> > (osgi.serviceloader=javax.enterprise.inject.se.SeContainerInitializer)
> >
> > I don't know which bundle provides that service loader.
> >
> > Can you please point me to a set of bundles to use Johnzon JSON-B in OSGi?
> >
> > With regards,
> > Markus
> >
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com

View raw message