Package hudson.remoting
Interface DelegatingCallable<V,T extends Throwable>
- All Superinterfaces:
Callable<V,
,T> RoleSensitive
,Serializable
Callable
that nominates another classloader for serialization.
For various reasons, one Callable
object (and all the objects reachable from it) is
serialized by one classloader.
By default, the classloader that loaded Callable
object itself is used,
but when Callable
object refers to other objects that are loaded by other classloaders,
this will fail to deserialize on the remote end.
In such a case, implement this interface, instead of plain Callable
and
return a classloader that can see all the classes.
In case of Jenkins, PluginManager.uberClassLoader
is a good candidate.
- Author:
- Kohsuke Kawaguchi
-
Method Summary
Modifier and TypeMethodDescriptionReturns the class loader to be used for the callable.Methods inherited from interface hudson.remoting.Callable
call, getChannelOrFail, getOpenChannelOrFail
Methods inherited from interface org.jenkinsci.remoting.RoleSensitive
checkRoles
-
Method Details
-
getClassLoader
Returns the class loader to be used for the callable.- Returns:
ClassLoader
to be used. The value may benull
if the classloader is not being propagated to the remote side. If all classes in the call are primitives orVoid
, the value may be alsonull
. In such cased the handling code should try other possible classloaders.
-