Skip to content

Commit

Permalink
use context class loader
Browse files Browse the repository at this point in the history
  • Loading branch information
xerial committed Aug 1, 2011
1 parent 9c86835 commit 3e533b4
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions src/main/java/org/xerial/snappy/SnappyLoader.java
Expand Up @@ -81,13 +81,9 @@
*/
public class SnappyLoader
{
private static boolean isInitialized = false;
private static boolean isLoaded = false;
private static SnappyNativeAPI api = null;

// preserved for LocalSnappyNativeLoader
private static HashMap<String, Boolean> loadedLibFiles = new HashMap<String, Boolean>();
private static HashMap<String, Boolean> loadedLib = new HashMap<String, Boolean>();
private static boolean isInitialized = false;
private static boolean isLoaded = false;
private static SnappyNativeAPI api = null;

private static ClassLoader getRootClassLoader() {
ClassLoader cl = SnappyLoader.class.getClassLoader();
Expand Down Expand Up @@ -193,7 +189,8 @@ static synchronized SnappyNativeAPI load() {
try {
if (!useNativeCodeInjection) {
// Use the local loader
return SnappyLoader.class.getClassLoader().loadClass(LocalSnappyNativeLoader.class.getName());
return Thread.currentThread().getContextClassLoader()
.loadClass(LocalSnappyNativeLoader.class.getName());
}
else {
// Use parent class loader to load SnappyNative, since Tomcat, which uses different class loaders for each webapps, cannot load JNI interface twice
Expand Down Expand Up @@ -246,7 +243,7 @@ static synchronized SnappyNativeAPI load() {

private static void loadNativeLibrary(Class< ? > loaderClass) {
if (loaderClass == null)
throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, "missing snappy loader class");
throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, "missing snappy native loader class");

try {
File nativeLib = findNativeLibrary();
Expand All @@ -272,9 +269,12 @@ private static void loadNativeLibrary(Class< ? > loaderClass) {

private static class LocalSnappyNativeLoader
{
// preserved for LocalSnappyNativeLoader
private static HashMap<String, Boolean> loadedLibFiles = new HashMap<String, Boolean>();
private static HashMap<String, Boolean> loadedLib = new HashMap<String, Boolean>();

public static synchronized void load(String lib) {
if (loadedLibFiles.containsKey(lib) && loadedLibFiles.get(lib) == true)
if (loadedLibFiles.containsKey(lib))
return;

try {
Expand All @@ -287,7 +287,7 @@ public static synchronized void load(String lib) {
}

public static synchronized void loadLibrary(String libname) {
if (loadedLib.containsKey(libname) && loadedLib.get(libname) == true)
if (loadedLib.containsKey(libname))
return;

try {
Expand Down

0 comments on commit 3e533b4

Please sign in to comment.