karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Bosschaert <david.bosscha...@gmail.com>
Subject Re: Classloading question (Spring DM + Felix)
Date Tue, 24 Sep 2013 18:35:22 GMT
Yes, I'm pretty sure Blueprint doesn't replace the OSGi classloaders.
However OSGi classloaders support the concept of Bundle Revisions [1].
As long as existing bundles refer to classes from a Bundle, even if
that bundle is updated or uninstalled a Bundle Revision is kept around
for it until the last reference is gone.

Cheers,

David

[1] http://www.osgi.org/javadoc/r5/core/org/osgi/framework/wiring/BundleRevision.html

On 24 September 2013 19:32, Johan Edstrom <seijoed@gmail.com> wrote:
> In the blueprint case I think and for this case it probably is cleanup -
> ie like commons-logging in Tomcat then, you keep refs to something.
>
>
>
> On Sep 24, 2013, at 12:29 PM, Charles Moulliard <ch007m@gmail.com> wrote:
>
>> And Blueprint too .... as i have done a test and behavior is the same
>> Personally I would prefer that we improve that. Otherwise what will be
>> here the benefit to promote OSGI ?
>>
>>
>>
>> On Tue, Sep 24, 2013 at 6:44 PM, Johan Edstrom <seijoed@gmail.com> wrote:
>>
>>> Spring dm replaces the classloaders for the bundles.
>>>
>>> Sent from my pressure cooker.
>>>
>>> On Sep 23, 2013, at 23:04, Charles Moulliard <ch007m@gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Is there a reason why when we deploy  2 bundles where Bundle A = Spring
>>> DM
>>>> project = Spring XML File + Bean initialized using Class exposed by
>>> Bundle
>>>> B that when we remove Bundle B, the Bundle A (after osgi;restart) still
>>>> contain Class from Bundle B ? Does it work like that with Aries
>>> Blueprint ?
>>>>
>>>> Scenario
>>>>
>>>> 1) Package a bundle B containing a class  com.mycompany.HelloWorld &
>>>> exporting this package
>>>> 2) Package a Spring XML file creating a bean (com.mycompany.HelloWorld)
>>> as
>>>> a Bundle A
>>>> 3) Deploy Bundle A, B
>>>> 4) Start them and verify in the log that by example init method of
>>>> HelloWorld has been called
>>>> 5) Stop Bundle B, remove it
>>>> 6) Restart Bundle A = Spring project. No error occurs !
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> Charles Moulliard
>>>> Apache Committer / Architect @RedHat
>>>> Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com
>>>
>>
>>
>>
>> --
>> Charles Moulliard
>> Apache Committer / Architect @RedHat
>> Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com
>

Mime
View raw message