[ 
https://issues.apache.org/jira/browse/OWB-652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224469#comment-13224469
 ] 

Mark Struberg commented on OWB-652:
-----------------------------------

Well, I'm looking for an automated process right now.

ClassLoader parentCl = classloader.getParent();
boolean parentBmNeeded = false;
urls = ScannerService.getResources("META-INF/beans.xml");
for (ULR url:urls) {
  if (parentCl cansee url) {
    ignore this url;
    parentBmNeeded = true;
  } else {
   scan this url
  }
}

If the ScannerService of the initial BeanManager (TCCL of the WebApp) at the 
end has parentBmNeeded==true then we recursively delegate further scanning to a 
parent BeanManager(with the parent ClassLoader). 
No matter how deep the structure is, it will automatically work. This also 
includes a probable shared CL on the whole container level (shared across 
multiple EARs).
Not yet 100% sure how to deal with Extensions of course. 

                
> Introduce HierarchicBeanManager
> -------------------------------
>
>                 Key: OWB-652
>                 URL: https://issues.apache.org/jira/browse/OWB-652
>             Project: OpenWebBeans
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.1.3
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>             Fix For: 1.1.4
>
>
> The currently implemented BeanManager cannot properly deal with multiple 
> ClassLoaders forming an isolation hierarchy.
> This mainly hits EAR deployment in Java EE servers. The spec is not really 
> clear about this scenario and in fact no existing EE server currently solves 
> this problem sattisfyingly. 
> I already explained quite a few times how we can overcome this problem:
> http://mail-archives.apache.org/mod_mbox/openwebbeans-dev/201202.mbox/%[email protected]%3E
> GERONIMO-6005
> https://issues.jboss.org/browse/CDI-142
> https://issues.jboss.org/browse/CDI-18
> https://issues.jboss.org/browse/CDI-129
> The solution:
> Each ClassLoader which has a BeanArchive will get it's own Beans. Any Beans 
> accessible through a parent BeanManager will not be contained. Instead they 
> must be resolved via the parent ClassLoader.
> It should be possible to easily implement this by introducing a 
> HierarchicScannerService as a child-Interface of ScannerService which knows 
> how to exclude parent BDAs. If a HierarchicScannerService is configured, the 
> BeanManager will automatically delegate the detection to it's parent 
> BeanManager. Otherwise all remains the way it is right now.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to