Author: cziegeler Date: Wed Jul 27 15:26:08 2011 New Revision: 1151498 URL: http://svn.apache.org/viewvc?rev=1151498&view=rev Log: Set thread context classloader when using jaxb
Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java Modified: sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java URL: http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java?rev=1151498&r1=1151497&r2=1151498&view=diff ============================================================================== --- sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java (original) +++ sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletRegistryService.java Wed Jul 27 15:26:08 2011 @@ -26,6 +26,7 @@ import java.util.Map; import javax.portlet.Portlet; import javax.portlet.PortletException; import javax.servlet.ServletContext; +import javax.xml.bind.JAXBContext; import org.apache.pluto.container.ContainerInfo; import org.apache.pluto.container.PortletAppDescriptorService; @@ -289,7 +290,9 @@ public class DefaultPortletRegistryServi private PortletApplicationDefinition createDefinition(ServletContext servletContext, String name, String contextPath) throws PortletContainerException { PortletApplicationDefinition portletApp = null; + final ClassLoader oldTCCL = Thread.currentThread().getContextClassLoader(); try { + Thread.currentThread().setContextClassLoader(JAXBContext.class.getClassLoader()); InputStream paIn = servletContext.getResourceAsStream(PORTLET_XML); InputStream webIn = servletContext.getResourceAsStream(WEB_XML); if (paIn == null) { @@ -304,6 +307,8 @@ public class DefaultPortletRegistryServi portletDDService.mergeWebDescriptor(portletApp, webIn); } catch (Exception ex) { throw new PortletContainerException("Unable to load portlet descriptor for context " + contextPath, ex); + } finally { + Thread.currentThread().setContextClassLoader(oldTCCL); } return portletApp; }