On Saturday, May 13, 2017, Alex Sviridov <ooo_satu...@mail.ru.invalid>
wrote:

>
> Hi Karl
>
> Thank you for your answer. I've tested your solution. I did the following
> steps:
> -stopped bundleA
> -updated bundleA
> -started bundleA
> However, BundleB is still using old classes from bundleA after all steps.
>
> How can I make BundleB use new classes (automatically) and not to restart
> bundleA twice?


As Rick mentioned, you have to explicitly refresh inbetween- sorry for not
being clear about that. The sequence must be: stop, update, refresh, start.

You can read more about the why here:

http://felix.apache.org/documentation/tutorials-examples-and-presentations/apache-felix-osgi-faq.html#when-i-update-my-bundle-why-are-my-bundles-old-classes-still-being-used

regards,

Karl


> >Пятница, 12 мая 2017, 14:38 +03:00 от Karl Pauls <karlpa...@gmail.com
> <javascript:;>>:
> >
> >> For example I have a running osgi framework with two bundles: bundleA
> and bundleB
> >> which jars are in JARS folder. BundleB depends on BundleA. Now I
> replace bundleA jar
> >> in JARS folder.
> >>
> >> Is there any way to refresh framework (there is new version of bundleA
> in JARS folder)
> >> and not to start/stop bundleA twice?
> >
> >Yes, you basically don't just update() but call stop() then update()
> >and finally start() on bundleA again.
> >
> >regards,
> >
> >Karl
> >
> >> Best regards, Alex
> >>
> >>
> >>>Среда, 10 мая 2017, 16:55 +03:00 от "Richard S. Hall" <
> he...@ungoverned.org <javascript:;> >:
> >>>
> >>>On 5/10/17 08:16 , Alex Sviridov wrote:
> >>>> Hi all
> >>>>
> >>>> I use Apache Felix 5.4.0 and I have two bundles: bundleA and bundleB.
> BundleB depends on bundleA.
> >>>>
> >>>> I update bundleA and after that run the following code to do osgi
> refresh:
> >>>>
> >>>> Bundle systemBundle  = bcx . getBundle ( 0 );
> >>>> FrameworkWiring frameworkWiring  = systemBundle . adapt (
> FrameworkWiring . class );
> >>>> frameworkWiring . refreshBundles ( null );
> >>>> (from here  http://stackoverflow.com/a/23361835/5057736 )
> >>>>
> >>>> This code does the following: it stops and starts bundleA and stops
> and starts bundleB.
> >>>>
> >>>> But why bundleA? I am asking because in result bundleA is two times
> updated. Is this a bug or what?
> >>>
> >>>The first stop/start is when you do the update, the second is when you
> >>>do the refresh. The former is historical, since that is the way update()
> >>>was defined in the first version of the spec (I believe). Later versions
> >>>of the spec where refreshing was introduced didn't change this behavior
> >>>for backward compatibility reasons.
> >>>
> >>>If refresh were there from the beginning, then it would have likely been
> >>>better to have update() simply prepare the updated version and refresh
> >>>enact it.
> >>>
> >>>-> richard
> >>>
> >>>>
> >>>> Best regards, Alex
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail:  users-unsubscr...@felix.apache.org
> <javascript:;>
> >>>For additional commands, e-mail:  users-h...@felix.apache.org
> <javascript:;>
> >>>
> >>
> >>
> >> --
> >> Alex Sviridov
> >
> >
> >
> >--
> >Karl Pauls
> >karlpa...@gmail.com <javascript:;>
>
>
> --
> Alex Sviridov
>


-- 
Karl Pauls
karlpa...@gmail.com

Reply via email to