diff options
author | Benoit Foucher <benoit@zeroc.com> | 2013-01-14 07:17:12 -0800 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2013-01-14 07:17:12 -0800 |
commit | 67c35cebfdf005a8cc344a4012642a63cd917015 (patch) | |
tree | b662c5c1fbc808af0bf70ab5f426f930deb42c22 /java/src/IceInternal/Incoming.java | |
parent | minor grammar fix (diff) | |
download | ice-67c35cebfdf005a8cc344a4012642a63cd917015.tar.bz2 ice-67c35cebfdf005a8cc344a4012642a63cd917015.tar.xz ice-67c35cebfdf005a8cc344a4012642a63cd917015.zip |
Missing updates for Ice.UseServantClassLoader following earlier partial commit
Diffstat (limited to 'java/src/IceInternal/Incoming.java')
-rw-r--r-- | java/src/IceInternal/Incoming.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/java/src/IceInternal/Incoming.java b/java/src/IceInternal/Incoming.java index 1c146cad944..1bb01d0ef68 100644 --- a/java/src/IceInternal/Incoming.java +++ b/java/src/IceInternal/Incoming.java @@ -208,17 +208,32 @@ final public class Incoming extends IncomingBase implements Ice.Request { if(_servant != null) { - // - // DispatchAsync is a "pseudo dispatch status", used internally only - // to indicate async dispatch. - // - if(_servant.__dispatch(this, _current) == Ice.DispatchStatus.DispatchAsync) + if(_instance.useServantClassLoader()) + { + Thread.currentThread().setContextClassLoader(_servant.getClass().getClassLoader()); + } + + try { // - // If this was an asynchronous dispatch, we're done here. + // DispatchAsync is a "pseudo dispatch status", used internally only + // to indicate async dispatch. // - return; - } + if(_servant.__dispatch(this, _current) == Ice.DispatchStatus.DispatchAsync) + { + // + // If this was an asynchronous dispatch, we're done here. + // + return; + } + } + finally + { + if(_instance.useServantClassLoader()) + { + Thread.currentThread().setContextClassLoader(null); + } + } if(_locator != null && !__servantLocatorFinished()) { |