Richard Eckart de Castilho created UIMA-3692:
------------------------------------------------

             Summary: Classloading inconsistencies
                 Key: UIMA-3692
                 URL: https://issues.apache.org/jira/browse/UIMA-3692
             Project: UIMA
          Issue Type: Bug
          Components: uimaFIT
    Affects Versions: 2.0.0uimaFIT
            Reporter: Richard Eckart de Castilho
            Assignee: Richard Eckart de Castilho
            Priority: Minor
             Fix For: 2.0.1uimaFIT


The type discovery mechanism relies on Spring tech and eventually on 
org.springframework.util.ClassUtils.getDefaultClassLoader() which tries the 
following classloaders:

* Thread.currentThread().getContextClassLoader()
* ClassUtils.class.getClassLoader()

This allows it to override the classloader used for type scanning by setting 
the thread classloader.

However, when we actually instantiate components, we rely on UIMA tech which 
uses:
* getUimaContextAdmin().getResourceManager().getExtensionClassLoader()
* Class.forName(annotatorClassName)

In particular, it does not look at the thread context. 

To make classloading consistent, it appears that uimaFIT should check if there 
is a thread classloader and configure it as the extension classloader for UIMA 
components created via uimaFIT. Because uimaFIT is using mainly static methods, 
respecting the thread classloader appears to be the most sensible thing. At 
least better than setting a global classloader.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to