Hello,

recently I've thought of using JSF in an OSGi environment because of the greater modularity it would provide for developers. JSF already provides reusability regarding the user interface, i.e. JSF provides the possibility to create user interface components, but what do you do if you want to reuse more aspects of previous applications than just user interface fragements? How to reuse dialogs, i.e. certain workflows, etc..?

OSGi already does provide these reusability features and hence I've adapted MyFaces in a way so that it's runnable in an OSGi container. Basically you just have to deploy an implementation of the OSGi HTTP Service (e.g. Pax Web [1]), the two MyFaces bundles (myfaces-api and myfaces-impl) and your web application bundles. Basically a BundleListener keeps track of all bundles being deployed to the OSGi container, so if the user installs a JSF bundle MyFaces gets notified and merges the current configuration with the configuration of the new bundle.

However, even though I've been able to implement a running version, I had to change major parts of MyFaces. For example, using OSGi you can't use the context class loader if you want to create a new instance for a class that resides in a different bundle (think of managed beans, MyFaces is responsible for creating the instance, but the class file is located in a different bundle) and hence I had to rewrite the configuration module (e.g. a LifecycleProvider implementation receives just a class name of the managed bean to instantiate assuming that it can load the class using the context class loader, but that won't work in the case of an OSGi environment).

Therefore I'd like to know if I should start contributing these changes? (and if so, should I create a different branch at first, etc.?)

regards,
Bernhard

[1]: http://wiki.ops4j.org/display/paxweb/Pax+Web

Reply via email to