summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Incoming.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2013-01-14 07:17:12 -0800
committerBenoit Foucher <benoit@zeroc.com>2013-01-14 07:17:12 -0800
commit67c35cebfdf005a8cc344a4012642a63cd917015 (patch)
treeb662c5c1fbc808af0bf70ab5f426f930deb42c22 /java/src/IceInternal/Incoming.java
parentminor grammar fix (diff)
downloadice-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.java31
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())
{