I would greatly appreciate if you could look into a better way of combining camel with DS.

I recently tried to make camel work with DS and found that the DS support camel provides is quite complex and does not work well.
See http://camel.apache.org/camel-and-scr.html
The problem are the camel components. These are announced as services and must be available before you start the camel context. The camel scr AbstractCamelRunner needs a lot of config to run and still is not correct. The problem is that it simply adds and removes the components at runtime
but once the camel context starts it is too late to add a component.
You will not notice the problem in karaf as karaf has very specific start level settings for the components to make sure they come up early but this sucks.

I have used a different approach for a demo:
https://github.com/cschneider/osgi-chat/blob/master/irc/src/main/java/net/lr/demo/chat/irc/IRCConnector.java
I simply add mandatory references to all components I use. So DS makes sure my component only comes up once everything is in place and also stops when some component is missing. This works fine but is a bit inconvenient. Maybe you have a better idea how to do this.

Btw. For CXF support I currently work on improvements for Remote Service Admin with CXF as a provider I think this is currently the best way to use CXF in DS but we have to make sure it covers all use cases people have. The CXF blueprint support allows a lot of settings and we have to make sure the RSA support can also offer all the needed customizations. Hibernate support works quite well now with Aries JPA and JPATemplate or alternatively with Aries tx-control.

Christian


On 08.07.2016 02:49, David Jencks wrote:

It sounds like as a DS partisan I should investigate camel and figure out a good DS way to come up with a route :-)

thanks
david jencks

On Jul 7, 2016, at 4:08 PM, Brad Johnson <[email protected] <mailto:[email protected]>> wrote:

Interesting that there should be such a discrepancy from what I see in the field and the specification work that's going on. If you look at the releases related to Aries, for example, the multiple blueprint projects have had multiple releases and updates this past year. Just looking at the Maven repo shows an incredible amount of activity. The Blueprint CM 1.0.8 was just released this March.

I sound like a blueprint advocate but I'm not really. I actually loathe working in XML. Believe me I've had a few years of blueprint headaches and have more than enough complaints about it. I just need pragmatic ways of wiring Camel and OSGi services together for enterprise applications with the dependency injection and OSGi interoperability and Camel EIPs that blueprint provides. If something better comes along then great, I'm all for it.

But I've also had enough experience withe Camel Java route builders to not really want to get into them again (despite the advantages in the IDE). And SCR annotations are pretty ugly quite frankly (I know, everyone has their own opinion of that). While I find the debate about proxy versus cascading services mildly interesting from an intellectual standpoint it isn't of tremendous importance to me. What is important to me is that my EIPs and routes work when I'm counting on a service reference being available. But I guess I can always dip into service order start up to hopefully make such guarantees.

Perhaps someday when someone writes that enterprise Camel with SCR book that makes it all easy and great in the day-to-day enterprise development world with CXF, JMS, Hibernate and so I'll flip to declarative services and abandon Blueprint. In the meantime I'm stuck with it as a tool.

Frankly if DS is the only game in town for the future then perhaps it'll be time to explore the wider world of technologies.



On Thu, Jul 7, 2016 at 4:48 PM, David Jencks <[email protected] <mailto:[email protected]>> wrote:

    Well, its the user list rather than dev list, but that’s minor.

    My point is that you are suggesting designing some new
    functionality for (possibly) blueprint.  I suggest that if you
    want to end up with a good design, you get osgi experts
    involved.  In my experience this results in a much improved
    design over what I can come up with by myself.

    You are also telling me that blueprint is very popular among osgi
    users.  My personal impression from working on osgi specs is that
    blueprint is regarded as basically dead as there has been no spec
    activity since IBM pushed the original spec.  Getting involved in
    updating the blueprint spec for R7 might be a good way to
    popularize the benefits of blueprint — just because I don’t see
    them doesn’t mean they aren’t there.

    Finally, I’m not convinced that you have a good understanding of
the different services and their currently specified behavior. If multi-location solves your problem and you are on R4.2 the
    solution is not to reinvent it for R4.2 or blueprint but to
    upgrade to R5+.

    thanks
    david jencks

    On Jul 7, 2016, at 12:38 PM, Brad Johnson
    <[email protected]
    <mailto:[email protected]>> wrote:

    Isn't this the Aries discussion forum which has a Blueprint
    implementation?  Why would this be the incorrect place to ask
    about such issues?

    On Thu, Jul 7, 2016 at 2:34 PM, Brad Johnson
    <[email protected]
    <mailto:[email protected]>> wrote:

        As I said on the Camel mailing list Red Hat isn't pushing
        that approach and I can't push my clients into things they
        don't want.  You and Scott England Sullivan seem to be the
        ones who think that DS is going to save the world.  I have a
        number of friends in consultancy both inside and outside Red
        Hat and they don't like or push DS.

        On Thu, Jul 7, 2016 at 2:30 PM, David Jencks
        <[email protected] <mailto:[email protected]>> wrote:

            I strongly suggest that you work on this in the context
            of an OSGI RFP/RFC.  You are apt to get much better
            advice that conducting the design discussion here.  I
            think it’s fairly ridiculous that after all these years
            blueprint’s relationship to config admin is unspecified.
            I think that there are no “blueprint people” other than
            users these days.

            I would also suggest studying at least the R6 config
            admin spec and understanding multi locations as that
            will make it clear that blueprint shouldn’t have
            anything explicit to do with bundle locations and that
            your concerns about sharing configuration across bundles
            have been dealt with in the appropriate spec already.

            In addition I suggest studying the DS R6 multiple pid
            support as a possible model for what you are interested
            in.  I don’t think your apparent idea of using pid name
            parsing as the way of relating multiple pids is very
            scalable or comprehensible.

            On the other hand, you could approach this all from a
            management agent perspective and have the management
            agent merge configuration source data with related
            “names" into a single configuration.  This would work
            with current blueprint cm.

            I think that merging data in config admin is an
            untenable approach.  It certainly wasn’t the approach
            adopted for DS, and I would think getting spec support
            for it would be difficult.

            david jencks


            > On Jul 7, 2016, at 10:53 AM, Brad Johnson
            <[email protected]
            <mailto:[email protected]>> wrote:
            >
            > As I work in more environments now that want to use
            microservices the limitations of the blueprint
            properties mechanics become a bit hairier.  I commonly
            find that I have bundles that have common properties
            shared across them and I can't find a good solution
            other than creating my own OSGi service for serving them
            up for such crosscutting concerns.
            >
            > I'm not an expert on the specification and
            implementations of compendium or blueprint libraries so
            don't know how feasible something like this would be but
            I would find the following terribly useful.
            >
            > A properties hierarchy much like Maven that permits
            you to specify a parent that you inherit from and then
            can add to or override.
            >
            > com.foo.parent.cfg
            > com.foo.child.cfg
            >
            > The child cfg file might have a #! directive at the
            top specifying com.foo.parent PID. And if another one was
            >
            > com.foo.grandchild.cfg
            >
            > it might specify com.foo.child as its parent.  Then
            the CM would load parent, override it with child and
            finally override that grahdchild.
            >
            > Yes, I'd still have to specify
            >
            > <cm:property-placeholder
            persistent-id="com.foo.granchild" update-strategy="reload">
            >
            > in my bundle and that would still be bound to that
            single bundle but this could alleviate the need for
            replication of properties across a lot of bundles.
            >
            > Technically that is all rather straightforward but I'm
            not sure how well that would align with the
            specifications or goals of CM.
            >
            > Brad








--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to