Here's my current better(?) thought that avoids injecting and doesn't
presume the SystemClassLoader is a subclass of URLClassLoader, and
avoids permission issues that could arise in some environments when
later adding to the URL set via addURL():

Use the defined property
-Djava.system.class.loader=org.apache.uima.bootstrap.SystemClassLoader

and add a class SystemClassLoader which is defined to be a subclass of
URL ClassLoader, and delegates to it.  Define the constructor
SystemClassLoader(ClassLoader parent) to call its parent with the proper
list of URLs as before.

No reflection is needed.

Now to get this tested :-)  -Marshall

Marshall Schor wrote:
> Marshall Schor wrote:
>   
>> Thilo Goetz wrote:
>>   
>>     
>>> Marshall Schor wrote:
>>> [...]
>>>   
>>>     
>>>       
>>>> Both of these approaches put uimaj-core classes at the "root" level of
>>>> the application (i.e., "System") class-loader chain.  I can't think of
>>>> any cases where that would not be OK; can anyone else?
>>>>     
>>>>       
>>>>         
>>> I think that may not work because the UIMA
>>> framework classes need to access the annotator classes.
>>> If the core is loaded by the system classloader, it
>>> will not have access to classes loaded by the bs loader.
>>>   
>>>     
>>>       
>> Yes, this sounds right.
>>
>> How about this "fix": put a copy of the UIMALogFormatter into the
>> bootstrap loader Jar.  This class does not reference any uima classes,
>> only Java JRE classes.
>>   
>>     
> I think this issue is general, not restricted to the Formatter class. 
> The Javadocs for the LogManager say that the class objects named in the
> configuration are loaded by using the System class loader.  It actually
> says the classes are "first searched on the system class path before any
> user class path."   But it seems that only the application initial class
> path that is used to launch things, is searched.
>
> So maybe the only approach will be to inject all the urls into the
> system class loader, as Jerry was trying to do (Jars and directories,
> not individual classes). 
>
> Any other ideas?
>
> -Marshall
>   
>> -Marshall
>>
>>   
>>     
>>> --Thilo
>>>
>>>
>>>
>>>   
>>>     
>>>       
>>   
>>     
>
>
>   

Reply via email to