HHH-8655 Classloader conflicts with embedded OSGi frameworks
This commit is contained in:
parent
90a08ec3a2
commit
09b2f11afb
|
@ -52,17 +52,22 @@ public class OsgiClassLoader extends ClassLoader implements Stoppable {
|
||||||
private Map<String, Class<?>> classCache = new HashMap<String, Class<?>>();
|
private Map<String, Class<?>> classCache = new HashMap<String, Class<?>>();
|
||||||
private Map<String, URL> resourceCache = new HashMap<String, URL>();
|
private Map<String, URL> resourceCache = new HashMap<String, URL>();
|
||||||
|
|
||||||
|
public OsgiClassLoader() {
|
||||||
|
// DO NOT use ClassLoader#parent, which is typically the SystemClassLoader for most containers. Instead,
|
||||||
|
// allow the ClassNotFoundException to be thrown. ClassLoaderServiceImpl will check the SystemClassLoader
|
||||||
|
// later on. This is especially important for embedded OSGi containers, etc.
|
||||||
|
super( null );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the class and break on first found match. DO NOT use ClassLoader#parent, which is typically the
|
* Load the class and break on first found match.
|
||||||
* SystemClassLoader for most containers. Instead, allow the ClassNotFoundException to be thrown.
|
|
||||||
* ClassLoaderServiceImpl will check the SystemClassLoader later on.
|
|
||||||
*
|
*
|
||||||
* TODO: Should this throw a different exception or warn if multiple
|
* TODO: Should this throw a different exception or warn if multiple
|
||||||
* classes were found? Naming collisions can and do happen in OSGi...
|
* classes were found? Naming collisions can and do happen in OSGi...
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
protected Class<?> findClass(String name) throws ClassNotFoundException {
|
||||||
if ( classCache.containsKey( name ) ) {
|
if ( classCache.containsKey( name ) ) {
|
||||||
return classCache.get( name );
|
return classCache.get( name );
|
||||||
}
|
}
|
||||||
|
@ -96,6 +101,7 @@ public class OsgiClassLoader extends ClassLoader implements Stoppable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the class and break on first found match.
|
* Load the class and break on first found match.
|
||||||
|
*
|
||||||
* TODO: Should this throw a different exception or warn if multiple
|
* TODO: Should this throw a different exception or warn if multiple
|
||||||
* classes were found? Naming collisions can and do happen in OSGi...
|
* classes were found? Naming collisions can and do happen in OSGi...
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue