You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/09/14 13:03:43 UTC
svn commit: r1624833 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java
Author: rmannibucau
Date: Sun Sep 14 11:03:42 2014
New Revision: 1624833
URL: http://svn.apache.org/r1624833
Log:
TOMEE-1344 closing classloader if possible
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java?rev=1624833&r1=1624832&r2=1624833&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java Sun Sep 14 11:03:42 2014
@@ -29,7 +29,9 @@ import org.apache.openejb.util.classload
import org.apache.xbean.recipe.ObjectRecipe;
import java.beans.Introspector;
+import java.io.Closeable;
import java.io.File;
+import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
@@ -154,6 +156,14 @@ public class ClassLoaderUtil {
for (final String jar : getClosedJarFiles(classLoader)) {
clearSunJarFileFactoryCache(jar);
}
+
+ if (Closeable.class.isInstance(classLoader)) {
+ try {
+ Closeable.class.cast(classLoader).close();
+ } catch (final IOException e) {
+ // no-op
+ }
+ }
}
/**
@@ -203,8 +213,6 @@ public class ClassLoaderUtil {
@SuppressWarnings({"UseOfObsoleteCollectionType", "PMD.AvoidCallingFinalize"})
public boolean finalizeNativeLibs(final ClassLoader cl) {
-
- boolean res = false;
final Class classClassLoader = ClassLoader.class;
Field nativeLibraries = null;
@@ -215,7 +223,7 @@ public class ClassLoaderUtil {
}
if (nativeLibraries == null) {
- return res;
+ return false;
}
nativeLibraries.setAccessible(true);
@@ -228,10 +236,9 @@ public class ClassLoaderUtil {
}
if (!(obj instanceof Vector)) {
- return res;
+ return false;
}
- res = true;
final Vector javaLangClassLoaderNativeLibrary = (Vector) obj;
Method finalize;
@@ -245,7 +252,7 @@ public class ClassLoaderUtil {
finalize.setAccessible(true);
try {
- finalize.invoke(lib, new Object[0]);
+ finalize.invoke(lib);
} catch (final Throwable e) {
//Ignore
}
@@ -254,7 +261,7 @@ public class ClassLoaderUtil {
//Ignore
}
}
- return res;
+ return true;
}
public static void destroyClassLoader(final String appId) {