That's what gets a bit confusing about it all.  I'm coming from Blueprint
which I've used for a few years now and very much like the automated wiring
provided by CDI and especially the ease of testing.  But as I read about DS
and CDI it gets a bit confusing.  Camel SCR probably can't work with CDI
since it overrides an AbstractCamelRunner which requires route builder set
up but CDI would likely bootstrap those routes.  I don't find not being
able to use SCR a big loss however.

At this point even if I had to give up exporting services into the OSGi
registry I'd probably live with it and simple use routes for integration.
But working with the Camel CDI in 2.17 it is based on Weld, which is fine,
and not on PAX CDI so as you point out the OSGi service annotations aren't
there.  Which sort of anticipated the question I had this week end about
whether or not those would be ported. So my dependencies look like this:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- <camel.version>2.15.1.redhat-621084</camel.version> -->
<camel.version>2.17.3</camel.version>
<cdi.version>1.2</cdi.version>
<src.version>1.8</src.version>

</properties>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>${cdi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cdi</artifactId>
<version>${camel.version}</version>
</dependency>

So then I'm rummaging around trying to figure out how this is going to work
in the OSGi environment (Fuse 6.3 is pregnant and ready to drop an M1 soon
I think).  The only difference I can really see there is that the
camel-example-cdi-osgi also contains the basic OSGi pieces as provided and
uses Pax Exam for tests.  I think Pax Exam is fine for integration testing
but for basic unit tests it is a bit heavyweight and I'd prefer the Camel
CDI test runner even if I have to mock external services.

    <!-- OSGi API -->
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <scope>provided</scope>
    </dependency>

When I look at straight DS it gets even more of head scratcher with the
OSGi alliance seeming to push the Bnd Tools.

I had noticed Guillaume's pax.cdi as well but wasn't really sure how that
was going to fit in. Is that something would be added as a
dependency/installed as a feature in addition to camel-cdi?

Thanks for the feedback,
Brad

On Mon, Aug 22, 2016 at 10:08 AM, Antonin Stefanutti <anto...@stefanutti.fr>
wrote:

> Hi Brad,
>
> I’ve been working on Camel CDI in OSGi for a while and have ported my
> original samples to be tested in Karaf, which can be found in [1]. These
> samples exercise the portability of Camel CDI examples on OSGi, thus do not
> leverage the SCR equivalent annotations that PAX CDI provides. So the
> objective here was to prove technically the portability of "plain" Camel
> CDI applications on OSGi. The main outcome has been captured in [2], which
> highlights the difficulty to make the CDI implementations subclass proxying
> mechanism working seamlessly in a class loader constrained environment such
> as OSGi.
>
> Then, from the functional standpoint, Guillaume Nodet has been working
> lately on improving the SCR-like annotation support [3]. Though I haven’t
> found the time yet to test it with Camel CDI in particular.
>
> [1]: https://github.com/astefanutti/camel-cdi/tree/
> master/envs/osgi/src/test/java/org/apache/camel/cdi/osgi
> [2]: https://github.com/ops4j/org.ops4j.pax.cdi/pull/30
> [3]: https://github.com/ops4j/org.ops4j.pax.cdi/tree/master/pax-
> cdi-api/src/main/java/org/ops4j/pax/cdi/api
>
> Antonin
>
> > On 22 Aug 2016, at 16:33, Brad Johnson <brad.john...@mediadriver.com>
> wrote:
> >
> > Has anyone used Camel CDI in an OSGi environment?  Does it work well or
> at
> > least OK there?
> >
> > Brad
>
>

Reply via email to