Thank you. Now it is working as expected. Суббота, 13 мая 2017, 13:07 +03:00 от Karl Pauls <karlpa...@gmail.com>: > > > >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 >: >>> >>>> 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 >: >>>>> >>>>>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 >>>>>For additional commands, e-mail: users-h...@felix.apache.org >>>>> >>>> >>>> >>>> -- >>>> Alex Sviridov >>> >>> >>> >>>-- >>>Karl Pauls >>> karlpa...@gmail.com >> >> >>-- >>Alex Sviridov > > >-- >Karl Pauls >karlpa...@gmail.com >
-- Alex Sviridov