On Monday 22 December 2008 10:17, j16sdiz at freenetproject.org wrote:
> Author: j16sdiz
> Date: 2008-12-22 10:17:00 +0000 (Mon, 22 Dec 2008)
> New Revision: 24728
>
> Modified:
> trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
> trunk/freenet/src/freenet/support/JarClassLoader.java
> Log:
> force close the jar file when plugin unload
Is it safe to close it when the only reason we want to close it is it's not
unloading properly?
>
> Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
> ===================================================================
> --- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-12-22 09:52:06 UTC (rev 24727)
> +++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-12-22 10:17:00 UTC (rev 24728)
> @@ -4,7 +4,9 @@
> import java.util.HashSet;
>
> import freenet.l10n.L10n;
> +import freenet.support.JarClassLoader;
> import freenet.support.Logger;
> +import freenet.support.io.Closer;
>
> public class PluginInfoWrapper {
>
> @@ -130,6 +132,13 @@
> }
> }
> }
> +
> + // Close the jar file, so we may delete / reload it
> + ClassLoader cl = plug.getClass().getClassLoader();
> + if (cl instanceof JarClassLoader) {
> + Closer.close((JarClassLoader) cl);
> + }
> +
> // always remove plugin
> manager.removePlugin(this);
> }
>
> Modified: trunk/freenet/src/freenet/support/JarClassLoader.java
> ===================================================================
> --- trunk/freenet/src/freenet/support/JarClassLoader.java 2008-12-22
09:52:06 UTC (rev 24727)
> +++ trunk/freenet/src/freenet/support/JarClassLoader.java 2008-12-22
10:17:00 UTC (rev 24728)
> @@ -19,6 +19,7 @@
> package freenet.support;
>
> import java.io.ByteArrayOutputStream;
> +import java.io.Closeable;
> import java.io.File;
> import java.io.FileOutputStream;
> import java.io.IOException;
> @@ -38,7 +39,7 @@
> * @author <a href="mailto:dr at ina-germany.de">David Roden</a>
> * @version $Id$
> */
> -public class JarClassLoader extends ClassLoader {
> +public class JarClassLoader extends ClassLoader implements Closeable {
>
> /** The temporary jar file. */
> private JarFile tempJarFile;
> @@ -166,4 +167,7 @@
> return name.replace('.', '/') + ".class";
> }
>
> + public void close() throws IOException {
> + tempJarFile.close();
> + }
> }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20090110/b8ce3c00/attachment.pgp>