[ 
https://issues.apache.org/jira/browse/FELIX-2670?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard S. Hall updated FELIX-2670:
-----------------------------------

    Description: 
When determining if a class is not from a bundle in 
ModuleImpl.isClassNotLoadedFromBundle() (terrible method name, by the way), it 
attempts to ignore all framework classes by checking if the target class' class 
loader is the same as the framework's class loader. This check is too broad 
since the framework's class loader is typically the app class loader, which 
means that any other code on the class path will not trigger implicit boot 
delegation.

You could argue that implicit boot delegation was intended for JRE code and 
this is ok. However, just by changing the framework launcher to use a different 
class loader for the framework, you would get implicit boot delegation for code 
on the class path, so it seems odd that we trigger it under one situation but 
not another.

Perhaps the simple solution is to not perform a class loader check, but to 
compare the package namespace (i.e., use org.apache.felix.framework to 
determine framework classes).

  was:
When determining if a class is not from a bundle in 
ModuleImpl.isClassNotLoadedFromBundle() (terrible method name, by the way), it 
attempts to ignore all framework classes by checking if the target class' class 
loader is the same as the framework's class loader. This check it too broad 
since the framework's class loader is typically the app class loader, which 
means that any other code on the class path will not trigger implicit boot 
delegation.

You could argue that implicit boot delegation was intended for JRE code and 
this is ok. However, just by changing the framework launcher to use a different 
class loader for the framework, you would get implicit boot delegation for code 
on the class path, so it seems odd that we trigger it under one situation but 
not another.

Perhaps the simple solution is to not perform a class loader check, but to 
compare the package namespace (i.e., use org.apache.felix.framework to 
determine framework classes).


> [Framework] Implicit boot delegation doesn't delegate for external code in 
> all cases
> ------------------------------------------------------------------------------------
>
>                 Key: FELIX-2670
>                 URL: https://issues.apache.org/jira/browse/FELIX-2670
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-3.0.5
>            Reporter: Richard S. Hall
>            Priority: Minor
>             Fix For: framework-3.2.0
>
>
> When determining if a class is not from a bundle in 
> ModuleImpl.isClassNotLoadedFromBundle() (terrible method name, by the way), 
> it attempts to ignore all framework classes by checking if the target class' 
> class loader is the same as the framework's class loader. This check is too 
> broad since the framework's class loader is typically the app class loader, 
> which means that any other code on the class path will not trigger implicit 
> boot delegation.
> You could argue that implicit boot delegation was intended for JRE code and 
> this is ok. However, just by changing the framework launcher to use a 
> different class loader for the framework, you would get implicit boot 
> delegation for code on the class path, so it seems odd that we trigger it 
> under one situation but not another.
> Perhaps the simple solution is to not perform a class loader check, but to 
> compare the package namespace (i.e., use org.apache.felix.framework to 
> determine framework classes).

-- 
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