killbill-uncached

Details

diff --git a/osgi/src/main/java/com/ning/billing/osgi/http/OSGIServlet.java b/osgi/src/main/java/com/ning/billing/osgi/http/OSGIServlet.java
index 92c9b80..1448e58 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/http/OSGIServlet.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/http/OSGIServlet.java
@@ -72,11 +72,25 @@ public class OSGIServlet extends HttpServlet {
         // requestPath is the full path minus the JAX-RS prefix (/plugins)
         final String requestPath = req.getServletPath() + req.getPathInfo();
 
+
         final Servlet pluginServlet = getPluginServlet(requestPath);
+
+
         if (pluginServlet != null) {
             initializeServletIfNeeded(req, pluginServlet);
             final OSGIServletRequestWrapper requestWrapper = new OSGIServletRequestWrapper(req, servletRouter.getPluginPrefixForPath(requestPath));
-            pluginServlet.service(requestWrapper, resp);
+
+            //
+            // Before entering into the plugin we want to set context classloader to the Bundle classloader (pluginServlet is set with such a context)
+            // in case some libraries are using contextClassLoader.
+            //
+            final ClassLoader prevContextClassLoader = Thread.currentThread().getContextClassLoader();
+            Thread.currentThread().setContextClassLoader(pluginServlet.getClass().getClassLoader());
+            try {
+                pluginServlet.service(requestWrapper, resp);
+            } finally {
+                Thread.currentThread().setContextClassLoader(prevContextClassLoader);
+            }
         } else {
             resp.sendError(404);
         }