No problems for me.   Though I wonder if this reflects something that have
to be enhanced / modified.   If those jars are so closely related, wouldn't
it make sense to have only one ?  I've already suggested merging
camel-spring and camel-osgi some time ago, but I know wonder if they should
be moved into camel-core directly.  The other fact that leads me this way is
the fact that some components actually depend on camel-spring classes.

On Sun, Sep 6, 2009 at 14:33, Claus Ibsen <claus.ib...@gmail.com> wrote:

> On Fri, Sep 4, 2009 at 11:53 AM, Willem Jiang<willem.ji...@gmail.com>
> wrote:
> > Because there are some internal API dependencies between the camel-core ,
> > camel-spring. I'm not sure if the OSGi version range can help us to find
> out
> > the minor internal API change.
> >
>
> Yeah camel-core and camel-spring are really to tightly coupled that
> running with different version of them is not recommended.
> Eg routing with XML depends on camel-spring where as the routing model
> is in camel-core etc.
>
> So it make most sense to support upgrading various other camel
> components such as for example camel-jetty, camel-http, camel-velocity
> etc.
>
>
> > Willem
> >
> > Guillaume Nodet wrote:
> >>
> >> On Fri, Sep 4, 2009 at 11:22, Willem Jiang <willem.ji...@gmail.com>
> wrote:
> >>
> >>> +1 for #1,
> >>>
> >>> for the #2, I think we could let the component dependent on the version
> >>> ranges of camel-core, camel-spring, camel-osgi.
> >>> But for camel-core, camel-spring and camel-osgi, they should dependent
> >>> each
> >>> other with specific version.
> >>>
> >>>
> >> Why ?  This would prevent from upgrading one of those bundles without
> >> upgrading the others.
> >>
> >>
> >>> Willem
> >>>
> >>>
> >>>
> >>> Guillaume Nodet wrote:
> >>>
> >>>> I've spotted a few problems in the way the OSGi metadata for camel
> jars
> >>>> are
> >>>> computed.
> >>>> This makes deploying two versions of camel in OSGi nearly impossible.
> >>>> To fix, I plan to enhance the metadata in two ways:
> >>>>
> >>>> #1. bundles should not import the packages they export
> >>>> Here's an example what happen when you do so:
> >>>>  * install bundle A version vx that export foo.bar and import it
> >>>>    the OSGi framework will decide that A export this package because
> no
> >>>> other package is available
> >>>>  * install the same bundle in version vy
> >>>>    as some of the packages are already exported by the first version
> of
> >>>> A,
> >>>> the OSGi resolver may choose
> >>>>    to have this bundle import the package in version vx (provided that
> >>>> the
> >>>> version constraints match)
> >>>>    this means that this bundle will not use its own classes for all
> the
> >>>> packages that are in common, leading
> >>>>    to obvious problems
> >>>> So not importing the package means that the OSGi framework will always
> >>>> use
> >>>> the classes from inside the bundle.
> >>>>
> >>>> #2. always use version ranges
> >>>>  * For non camel imports, I think the default should be to have a
> range
> >>>> equal to [v,v+1) assuming backward compatibility is preserved on minor
> >>>> releases.  So if one bundle has a dependency on foo.bar version 1.1,
> the
> >>>> range will be [1.1,2) meaning the framework is allowed to choose any
> >>>> package
> >>>> with a version >= 1.1 but < 2.0
> >>>>  * for camel imports, this is a bit trickier.  I think the default
> range
> >>>> should be restricted to minor versions, i.e. [1.1,1.2)
> >>>>
> >>>> The problem here is to allow someone to update a camel component or
> core
> >>>> without updating the whole camel jars, so we need some flexibility on
> >>>> this
> >>>> range.  But usually, I don't think we really ensure full backward
> >>>> compatibility between minor versions, so having [2.0,3) might not be a
> >>>> good
> >>>> idea.
> >>>> Furthermore, this would mean that you can't really deploy two
> different
> >>>> minor versions of camel in the same framework, which I think is
> >>>> desirable.
> >>>>
> >>>> Now, the tricky part is to make sure that we always use consistent
> >>>> classes.
> >>>> For example when camel-core discover a component, we don't really want
> >>>> camel-core 1.4 discovering camel 2.0 components, as this would fail.
> >>>> So
> >>>> the discovery mechanism has to be enhanced to make sure we load
> >>>> compatible
> >>>> classes.
> >>>> In OSGi, this can be done by loading a class from the component bundle
> >>>> and
> >>>> making sure it's the same as our.
> >>>> For example:
> >>>>   componentBundle.loadClass(org.apache.camel.Endpoint.class.getName())
> >>>> ==
> >>>> org.apache.camel.Endpoint.class
> >>>> This way, the discovery mechanism will be retricted to components that
> >>>> are
> >>>> actually wired to this camel-core bundle.
> >>>>
> >>>> So at the end we should be able to:
> >>>>  * deploy multiple versions of camel, provided they have different
> minor
> >>>> releases (ex: 1.4, 2.0, 2.1)
> >>>>  * upgrade components / core with micro release (ex: camel-core 2.0,
> >>>> camel-spring 2.0.2, camel-atom 2.0.1)
> >>>> And everything should work nicely :-)
> >>>>
> >>>> I'll start updating the OSGi metadata, but any help would be welcome,
> as
> >>>> there are tons of components here !
> >>>> Also, any volunteer for upgrading and testing the discovery mechanism
> is
> >>>> welcomed !
> >>>>
> >>>>
> >>
> >>
> >
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to