--- src/org/jacorb/poa/RequestProcessor.java	2009-05-03 16:36:17.000000000 -0500
+++ src/org/jacorb/poa/RequestProcessor.java	2011-05-03 12:55:19.463632036 -0500
@@ -278,6 +278,11 @@
 
     private void invokeOperation()
     {
+        // Set the TCCL to the servant's classloader, but save the current TCCL first.
+        Thread currentThread = Thread.currentThread();
+	ClassLoader prevClassLoader = currentThread.getContextClassLoader();        
+	currentThread.setContextClassLoader(servant.getClass().getClassLoader()); 
+
         try
         {
             if (servant instanceof org.omg.CORBA.portable.InvokeHandler)
@@ -360,6 +365,11 @@
             }
             request.setSystemException (new org.omg.CORBA.UNKNOWN(e.toString()));
         }
+        finally
+        {
+            // Restore the original TCCL.
+	    currentThread.setContextClassLoader(prevClassLoader); 
+	}
     }
 
 
