Dear all,

I would like to consult you all about the correctness and completeness of my 
arguments about concept of supporting strong migration of OSGi bundles. Strong 
migration can be understood as we migrate not only code segments, states(like 
private datas, references) but also execution states(program pointer, frame 
stack,...). In my point of view, we can not support strong migration of OSGi 
bundles based on the existing well-known following techniques: instrumenting 
source code of Java objects with preprocessor, modification of JVM in order to 
capture whole JVM stacks,..., or , JIT recompilation, or  Byte-Code 
instrumentation. Because OSGi orginally targetted for embebbed devices, 
therefore Byte-Code Instrumentation is the most appropriate approach to obtain 
strong migration of OSGi bundles. However, we can obviously see that in OSGi 
environment, OSGi services can be used by another services, therefore, capture 
execution states of OSGi bundle not only regarding its own execution
 states but also execution states of other used OSGi services and I believe 
that it is absolutely impossible. Is it right? Another aspects is that we move 
OSGi bundles to remote target host, OSGi bundle will be restarted to run again 
by OSGi environement by invoking Start(Bundlecontext...) function and 
intituively, OSGi bundles will loss all its states. Even assumed that we can 
capture execution states of OSGi bundle previously in the most simplest case 
that OSGi bundle contain only one OSGi service and this OSGi service not using 
any other external services, we have no way to rerun OSGi service from the 
suspended point of its execution flow due to the start(Bundlecontext...) must 
be called. Authors of project Javaflow claimed that he already succesfully 
implemented an Java Mobile Agent infrastructure that support strong migration 
of Java agents thanks to Continuation concept. The authors basically use 
techniques of Byte-code instrumention in order to capture/reinstantiate
 execution states of Java objects. They  instrument byte-code statically by 
using the Ant Javaflow Task or dynamically by using JavaFlow's 
ContinuationClassloader. The syntax can be described:ContinuationClassLoader 
classLoader = new ContinuationClassLoader (new URL[]{url}, 
ClassLoader.getSystemClassLoader());
I do believe that OSGi Classloader(even with R4) is not a subclass of 
ContinuationClassloader or URLClassloader, therefore it is impossible to get 
class loaded in OSGi enviroment using any particular Classloading mechanism.
Am I right?

I highly appreciate any other arguements or advices to show me that my 
arguements is still not correct and incomplete since we can apply some other 
approaches in order to acquire strong migration of OSGi component. Many thanks 
in advance.

Kind Regards,
Vu.
  instru

2



 
 
---------------------------------
Never miss an email again!
Yahoo! Toolbar alerts you the instant new Mail arrives. Check it out.
_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

Reply via email to