[
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