felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: Enhanced Apache Felix / JRebel integration
Date Thu, 29 Mar 2012 15:52:43 GMT
On 3/29/12 6:45, Robert Munteanu wrote:
> Hi,
> I am looking into enhancing the integration between Apache Felix and the JRebel [1] JVM
agent. If you're not familiar with JRebel, it's a java agent which allows classes loaded into
the JVM to be redefined as soon as they are recompiled e.g. in an IDE. For more information
about its features, see [2].
> JRebel already has basic support for Apache Felix by allowing classes for a deployed
bundle to be reloaded without requiring a bundle repackage and reinstall.
> What I want to contribute is support for components managed using declarative services.
The basic principle is that given a bundle which contains service components descriptors,
watch for changes to those component descriptors and refresh the components when the respective
descriptors have changed.
> I have taken a quick look at both JRebel and Felix to see how an implementation should
look like. JRebel offers support for detecting class changes, but not generic filesystem changes.
Therefore I'd have to rely on Felix code ( in org.apache.felix.scr ? ) to detect
> - when a bundle with component descriptors is deployed and start watching for changes
to the descriptors
> - when changes to the mentioned descriptors are detected refresh the components

Is there some reason you need to refresh at the class level as opposed 
to the bundle level? If the bundle level was sufficient then it seems 
like this scenario becomes much simpler.

Also, what do you mean by "refresh the components" above? Do you 
specifically mean re-load the class bytes? If so, how do you know that 
changes to the descriptor require re-loading the class bytes or are you 
just assuming it does?

Additionally, it seems you might be confused about the responsibility of 
some tasks. For example, SCR doesn't look for changes in component 
descriptors at all, it simply listens for bundles to be activated. 
Listening to changes in the component descriptor would have to hook into 
the build process somehow. By and large, none of the Felix subprojects 
are involved in the build process other than the Maven Bundle plugin.

-> richard

> I would like to validate that this is at all possible within Apache Felix and to ask
which are the best places to start looking for adding the JRebel functionality. Any thoughts/pointers
on how to best start developing this would be greatly appreciated.
> If this is feasible, I intend to develop this as a separate JRebel plugin and contribute
it to the Apache Felix project.
> Thanks,
> Robert
> [1]: http://zeroturnaround.com/jrebel/
> [2]: http://zeroturnaround.com/jrebel/features/

View raw message