From 9c86835cc3614c9a563acea61b66d95cabebf10f Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 1 Aug 2011 16:56:40 +0900 Subject: [PATCH] initialize local snappy loader --- .../java/org/xerial/snappy/SnappyLoader.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/xerial/snappy/SnappyLoader.java b/src/main/java/org/xerial/snappy/SnappyLoader.java index b043325..80b7457 100755 --- a/src/main/java/org/xerial/snappy/SnappyLoader.java +++ b/src/main/java/org/xerial/snappy/SnappyLoader.java @@ -190,13 +190,14 @@ public class SnappyLoader boolean useNativeCodeInjection = !Boolean.parseBoolean(System.getProperty(KEY_SNAPPY_DISABLE_NATIVE_INJECTION, "false")); - if (!useNativeCodeInjection) { - // Use the local loader - return LocalSnappyNativeLoader.class; - } - else { - // Use parent class loader to load SnappyNative, since Tomcat, which uses different class loaders for each webapps, cannot load JNI interface twice - try { + try { + if (!useNativeCodeInjection) { + // Use the local loader + return SnappyLoader.class.getClassLoader().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 + final String nativeLoaderClassName = "org.xerial.snappy.SnappyNativeLoader"; ClassLoader rootClassLoader = getRootClassLoader(); // Load a byte code @@ -235,10 +236,10 @@ public class SnappyLoader // Load the SnappyNativeLoader class return rootClassLoader.loadClass(nativeLoaderClassName); } - catch (Exception e) { - e.printStackTrace(System.err); - throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, e.getMessage()); - } + } + catch (Exception e) { + e.printStackTrace(System.err); + throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, e.getMessage()); } }