You can't. You have a binding on the MyBean class in the code of both B and C so you are pinned to exactly that version.
Alex Sent from my iPhone 4S On 30 Jan 2013, at 16:47, "matteo rulli" <matteo.ru...@abodata.com> wrote: > I'm facing the following issue under OSGi environment: let's say I have a > bundle A exporting com.mybiz.example package. This package, in its 1.0.0 > version, contains a bean class MyBean so that > > public class MyBean { > int var; > public MyBean() { } > public int getVar() { return var; } > public void setVar(int v) { var = v; } > } > > Bundle B exports an interface MyService which uses MyBean: > > public interface MyService { > public MyBean getMyBean(); > } > > Note: in our architecture, MyBean must be a class and not an interface. > > Bundle C uses MyService as a declarative service in this way: > > private AtomicReference<MyService> _serv = new > AtomicReference<MyService>(); > public void addMyService(MyService serv) { > //this method is the one called by declarative services when Bundle B is > started > _serv.set(serv); > } > > public void run() { > ... > > MyBean x = _serv.getMyBean(); > //use x ... > } > > Now the problem arises if I need to do a hot fix on MyBean class. > Let's say I need to add a field and some methods. > Then, I've got a running OSGi environment where bundles A,B,C are deployed. > > My requirement is that I cannot stop any bundle. > > So, under these hypotheses, I deploy a new version of my bundle A, say > A_1.1.0.jar. Now I'm not able to make bundle C to use the new version of > MyBean class contained in A_1.1.0.jar. > > How can I do it? > > Thank you very much! > > Best regards, > matteo > _______________________________________________ > equinox-dev mailing list > equinox-dev@eclipse.org > https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev