incubator-clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tommaso Teofili <>
Subject UIMA module thoughts (and refactoring)
Date Wed, 31 Aug 2011 14:48:27 GMT
Hi all,
the UIMA Addons 2.3.1 release happened on August 29th [1], this release
didn't include the OSGi packaging for the annotators since the UIMA
community wants to provide full support to OSGi in the future while the
addons OSGi packaging allowed only some basic use cases to be executed.

So far the bad news, the good news is that we can now include UIMA Addons
artifacts in our modules and that there is already a solution to face the
possible issues with class loading within a framework which is not fully
OSGi compliant.

The UIMAFramework class creates an AnalysisEngines given its (XML)
descriptor that contains the FQN of the annotator class which is then
instantiated via Class.forName().
As far as I've experienced this is not good when working within OSGi
containers as each bundle uses a separate ClassLoader so, for example, the
ClassLoader of the uima.utils bundle cannot see the ClerezzaCASConsumer
class in uima.casconsumer module by default.
Luckily UIMA provides the possibility of defining an extension ClassLoader
when instantiating the framework.
So the idea is to define an ExtensionClassLoader which registers the
ClassLoaders of UIMA classes implementing AnalysisComponent interface (that
is the interface for Annotators and CAS Consumers) and use it within the
creation of each AnalysisEngine.
Each bundle which has annotator classes can automatically register its
classes (in the ExtensionClassLoader) using an OSGi Activator (a
UIMABundleActivator in the maven-bundle-plugin configuration) which is
responsible for this task.

Obviously in the future releases of UIMA with full OSGi support the above
constraints could be safely removed.

So my idea is to apply the above changes in order to allow easy deploy of
custom UIMA pipelines within Clerezza. After that I think a brief 'Getting
started with Clerezza and UIMA' page would be useful.
Looking forward to your feedback.

[1] :

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message