Adam Heath wrote:
Christopher Snow wrote:
Adam Heath wrote:
Christopher Snow wrote:
Adam Heath wrote:
Christopher Snow wrote:
I think each component gets its own class loader, so this should be
happening anyway.
No, there is a single classloader for all of ofbiz.

Thanks for clarifying Adam.
It's actually slightly more complex.

start.jar begins, and it can only see itself.

It is then hard-coded(sorta, thru the use of internal properties files
embedded in the jar) to find all libraries in framework/base/lib, and
add then to an initial classloader.

This classloader contains the container and component loading logic.
That finds the rest of ofbiz, and creates a second classloader.  Note,
that this second classloader has duplicate framework/base libs, and
that the first one might have framework/base libs that it shouldn't,
because the ofbiz-component.xml for base may not include some library
folder.

Then, all the containers start.  One of those is catalina.  For each
web-app, it does create a separate classloader, and it might be
possible to override libraries there, by using WEB-INF/lib.  But this
is not the standard ofbiz way.
OSGi would be a nice solution to this problem!

What problem?

Control over which version of a library you depend on without having to setup and manage your own classloader.

Reply via email to