You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Scott Anderson <po...@gmail.com> on 2006/02/16 10:29:37 UTC

redeploying imported configuration results in ClassNotFoundException

Given...

config-A which has no parent configuration
config-B and config-C which both have config-A as their parent
web-app which has config-C as its parent and imports config-B
config-B defines a GBean that is used by the web-app

When I do the following...

redeploy config-B which also stops web-app
restart the web-app

I find that...

The class loader used to load the GBean from config-B is no longer among the
ancestors of the class loader used to load the servlet in the web-app.

Specifically...

There is a MultiParentClassLoader with id = config-B among both the ancestor
class loaders of the GBean from config-B and among the ancestor class
loaders of the servlet in the web-app. However the class loaders with that
id are different objects so I get a ClassNotFoundException when the servlet
attempts to use an object supplied by the GBean. If I restart geronimo
everything is working again.

Has anyone also run into this problem or have some insights on how to
correct what is going wrong and can point me towards a fix? I'm assuming
that this is not the correct behavior. I am using the 1.0 codebase.

BTW, it helped me to isolate this problem by changing the toString method of
MultiParentClassLoader to...

return "[" + super.toString() + " id=" + id + "]";

- Scott