What should happen is a separate class loader get created for 'B Plugin' which will
load resources and classes from 'A Plugin' if not found in 'B Plugin'.
That is how is should usually work. Read this for a more detailed description of how things are working. Maybe something in here can shed light on the issue?
This also has more classloading docs that may be helpful:
You mentioned something about discovery in your post - there is specific information on "discovery classloaders" in here that you should look at.
Thanks for your help. I scratched my head a bit, but basically what seemed to work is set classloader='instance' for my resource.
I think the documents are helpful but might be easier to grok with a couple of simple diagrams and more examples.
The expectation I had is that resources defined in a plugin can load classes and resources from that plugin, even though that plugin is using classes from another 'parent plugin.'