diff options
Diffstat (limited to 'java/src/Ice/AsyncResult.java')
-rw-r--r-- | java/src/Ice/AsyncResult.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/java/src/Ice/AsyncResult.java b/java/src/Ice/AsyncResult.java index dbde144ddef..8d70697c944 100644 --- a/java/src/Ice/AsyncResult.java +++ b/java/src/Ice/AsyncResult.java @@ -278,6 +278,11 @@ public class AsyncResult if(_callback != null) { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(_callback.getClass().getClassLoader()); + } + try { _callback.__completed(this); @@ -294,6 +299,13 @@ public class AsyncResult { __error(exc); } + finally + { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(null); + } + } } if(_observer != null) @@ -312,6 +324,11 @@ public class AsyncResult if(_callback != null) { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(_callback.getClass().getClassLoader()); + } + try { _callback.__sent(this); @@ -328,6 +345,13 @@ public class AsyncResult { __error(exc); } + finally + { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(null); + } + } } if(_observer != null) @@ -436,6 +460,11 @@ public class AsyncResult if(_callback != null) { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(_callback.getClass().getClassLoader()); + } + try { _callback.__completed(this); @@ -452,6 +481,13 @@ public class AsyncResult { __error(exc); } + finally + { + if(_instance.useApplicationClassLoader()) + { + Thread.currentThread().setContextClassLoader(null); + } + } } if(_observer != null) |