summaryrefslogtreecommitdiff
path: root/java/src/Ice/AsyncResult.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/Ice/AsyncResult.java')
-rw-r--r--java/src/Ice/AsyncResult.java36
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)