Author: j16sdiz
Date: 2008-12-31 15:35:23 +0000 (Wed, 31 Dec 2008)
New Revision: 24852
Modified:
trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
force plugin classloader on plugin start / web request: should fix db4o/perst
classnotfoundexception
Modified: trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2008-12-31
14:52:56 UTC (rev 24851)
+++ trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2008-12-31
15:35:23 UTC (rev 24852)
@@ -23,6 +23,11 @@
final PluginInfoWrapper pi = new PluginInfoWrapper(pr, plug,
filename);
final PluginStarter ps = new PluginStarter(pr, pi);
ps.setPlugin(pm, plug);
+
+ ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
+ ClassLoader pluginClassLoader =
plug.getClass().getClassLoader();
+ Thread.currentThread().setContextClassLoader(pluginClassLoader);
+ try {
// We must start the plugin *after startup has finished*
Runnable job;
if(!pi.isThreadlessPlugin()) {
@@ -40,6 +45,9 @@
plug.runPlugin(pr);
pm.register(plug, pi);
}
+ } finally {
+
Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
return pi;
}
Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2008-12-31
14:52:56 UTC (rev 24851)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2008-12-31
15:35:23 UTC (rev 24852)
@@ -529,8 +529,15 @@
return null;
*/
+ ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
+ ClassLoader pluginClassLoader =
handler.getClass().getClassLoader();
+ Thread.currentThread().setContextClassLoader(pluginClassLoader);
+ try {
if(handler instanceof FredPluginHTTP)
return ((FredPluginHTTP)
handler).handleHTTPGet(request);
+ } finally {
+
Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
throw new NotFoundPluginHTTPException("Plugin not found!",
"/plugins");
}
@@ -543,10 +550,15 @@
/*if (handler == null)
return null;
*/
-
+ ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
+ ClassLoader pluginClassLoader =
handler.getClass().getClassLoader();
+ Thread.currentThread().setContextClassLoader(pluginClassLoader);
+ try {
if(handler instanceof FredPluginHTTP)
return ((FredPluginHTTP)
handler).handleHTTPPost(request);
-
+ } finally {
+
Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
throw new NotFoundPluginHTTPException("Plugin not found!",
"/plugins");
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs