Hi,

What is the status of this?

Cheers,

Bruno

2009/5/31 Bernd Bohmann <bernd.bohm...@atanion.com>:
> Hello Bernhard,
>
> I would suggest you start with a own branch in 1.2 for the osgi changes.
> Later we should try to made all the myfaces libs more osgi frendly.
> Maybe we need an addition module or code in myfaces commons for the
> osgi support in tomahawk, tobago and trinidad based on experiences
> from the myfaces-core.
>
> I'm very interested in the osgi support. I would like to help you with
> the required changes in tobago.
>
> Regards
>
> Bernd
>
> On Fri, May 29, 2009 at 11:12 PM, Leonardo Uribe <lu4...@gmail.com> wrote:
>> Hi
>>
>> Ok, so the idea is become myfaces core OSGi friendly rather than create a
>> module for it. Sounds good for me.
>>
>> regards
>>
>> Leonardo Uribe
>>
>> 2009/5/29 Bernhard Huemer <bernhard.hue...@gmail.com>
>>>
>>> I think I'll have to explain that a little more:
>>> The current OSGi-fied version of MyFaces that I've implemented doesn't
>>> save class names in the runtime configuration but rather a combination of a
>>> class name and a class loader.
>>>
>>> ///
>>>
>>> public interface ClassLoader {
>>>
>>>  public Class loadClass(String className)
>>>    throws ClassNotFoundException;
>>>
>>> }
>>>
>>> /**
>>>  * ClassLoader implementation that uses the context class loader
>>>  * in order to load Java classes.
>>>  */
>>> public class JavaVmClassLoader implements ClassLoader {
>>>
>>>  private java.lang.ClassLoader classLoader;
>>>
>>>  public JavaVmClassLoader(java.lang.ClassLoader classLoader) {
>>>    this.classLoader = classLoader;
>>>  }
>>>
>>>  public Class loadClass(String className)
>>>      throws ClassNotFoundException {
>>>    return Class.forName(className, false, classLoader);
>>>  }
>>>
>>> }
>>>
>>> /**
>>>  * ClassLoader implementation that uses an OSGi bundle in order to
>>>  * load Java classes.
>>>  */
>>> public class OsgiClassLoader implements ClassLoader {
>>>
>>>  private Bundle bundle;
>>>
>>>  public OsgiClassLoader(Bundle bundle) {
>>>    this.bundle = bundle;
>>>  }
>>>
>>>  public Class loadClass(String className)
>>>      throws ClassNotFoundException {
>>>    return bundle.loadClass(className);
>>>  }
>>> }
>>>
>>> \\\
>>>
>>> However, there are other issue as well besides this one (no JSP available,
>>> different approach to resource loading, some dependencies of MyFaces aren't
>>> "OSGi-friendly", ...).
>>>
>>> regards,
>>> Bernhard
>>>
>>> Bernhard Huemer wrote:
>>>>
>>>> Hello,
>>>>
>>>> well, you can't simply "attach OSGi support" to an existing MyFaces
>>>> release. There are dozens of core classes that have to be changed. As I've
>>>> already mentioned, currently MyFaces assumes that it's sufficient to save
>>>> the class names (e.g. managed bean classes) as every class will be loaded
>>>> using the context class loader, but the OSGi-fied version of MyFaces would
>>>> also have to save the bundle to use for loading that class, etc..
>>>>
>>>> Hence I don't think that it's possible to create a new MyFaces commons
>>>> module for OSGi support.
>>>>
>>>> regards,
>>>> Bernhard
>>>>
>>>> Leonardo Uribe wrote:
>>>>>
>>>>> Hi
>>>>>
>>>>> Maybe a new module in myfaces commons is the right place to put this
>>>>> efforts.
>>>>>
>>>>> regards
>>>>>
>>>>> Leonardo Uribe
>>>>>
>>>>> 2009/5/29 Bernhard Huemer <bernhard.hue...@gmail.com
>>>>> <mailto:bernhard.hue...@gmail.com>>
>>>>>
>>>>>    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