[ 
https://issues.apache.org/jira/browse/MYFACES-2290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12770884#action_12770884
 ] 

Felix Röthenbacher commented on MYFACES-2290:
---------------------------------------------

The reason to use the BundleActivator and BundleContext is to get the bundle's 
classloader instead of using the context classloader.

You can find further information about context classloader issues in OSGi world 
at:

http://wiki.eclipse.org/index.php/Context_Class_Loader_Enhancements

Of the special interest for you might be the problem description:

http://wiki.eclipse.org/index.php/Context_Class_Loader_Enhancements#Problem_Description

Mojarra apparently uses the Thread.currentThread().getContextClassLoader() to 
load classes and resources. The problem is, that the context classloader is 
undefined in an OSGi environment. As I understand it, Mojarra, despite 
publishing OSGi bundle metadata,  hasn't solved the class loading problem.

Hth, Felix

> Add OSGi bundle information and bundle classloader / activator
> --------------------------------------------------------------
>
>                 Key: MYFACES-2290
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2290
>             Project: MyFaces Core
>          Issue Type: New Feature
>          Components: General
>    Affects Versions: 1.2.8-SNAPSHOT
>         Environment: OSGi (Equinox, Apache Felix, ...)
>            Reporter: Felix Röthenbacher
>            Assignee: Leonardo Uribe
>            Priority: Critical
>         Attachments: myfaces-core.diff.txt, myfaces-shared.diff.txt
>
>
> The provided patch will add OSGi information to bundle manifest. A bundle 
> activator class makes the MyFaces framework aware that it is running in a 
> bundle environment. A bundle classloader is used to load classes and 
> resources from the bundle classpath. The patch doesn't require any new 
> runtime dependencies and doesn't affect class loading in a non-OSGi 
> environment. Though, small modifications to classloading were needed. This 
> was mainly replacing Thread.currentThread.getContextClassLoader() with 
> ClassUtils methods.
> To run MyFaces in an OSGi environment both bundles (myfaces-api and 
> myfaces-impl) have to be started in the OSGi container. Additionally, the 
> myfaces-impl bundle has to be made available to myfaces-api. Use a fragment 
> bundle with myfaces-api as Fragment-Host and myfaces-impl as Required-Bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to