We (Atlassian) are in the middle of a rollout of our new plugin
framework that has Felix at its core.  The plugin system operates on
top of existing Java webapps as an embedded container, with plugins
exposing XML configuration defining what plugin extension points they
implement.  When the plugin is started, the web application needs to
resolve that class name to a class instance, which is currently
implemented using Bundle.loadClass().

However, the Bundle.loadClass() method is swallowing the root cause of
any exception causing the class to not be resolved, so if it is trying
to load FooPlugin, which fails due to a missing class dependency of
FooPlugin, Bundle.loadClass() throws a ClassNotFoundException that
says FooPlugin wasn't found, which is misleading.  I traced it down
(version 1.0.4) to ModuleImpl.getClass(), which swallows any
exceptions by only logging them as a warning.  Unfortunately, the warn
messages are given a lower priority by the host application due to a
number of warnings that happen as a natural part of the loading
sequence.

My question is what is the best way to get a better hold of this
exception?  One thought was to implement a logger that checks a
threadlocal variable that contains a
shouldThrowClassNotFoundExceptions() to see if it should treat the
exception as more serious.  Obviously, due to performance and memory
leak concerns, I'd like to avoid this, but I don't see any other way
right now.

Thanks,

Don

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to