protected void renderExclusive( HttpServletRequest request, HttpServletResponse response, ThemeDisplay themeDisplay) throws Exception { RenderRequestImpl renderRequestImpl = (RenderRequestImpl) request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST); RenderResponseImpl renderResponseImpl = (RenderResponseImpl) request.getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE); StringServletResponse stringResponse = (StringServletResponse) renderRequestImpl.getAttribute(WebKeys.STRING_SERVLET_RESPONSE); if (stringResponse == null) { stringResponse = (StringServletResponse) renderResponseImpl.getHttpServletResponse(); Portlet portlet = processPortletRequest(request, response, PortletRequest.RENDER_PHASE); InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, null); invokerPortlet.render(renderRequestImpl, renderResponseImpl); if (Validator.isNull(stringResponse.getString())) { stringResponse.setString(null); } } renderResponseImpl.transferHeaders(response); if (stringResponse.isCalledGetOutputStream()) { UnsyncByteArrayOutputStream ubaos = stringResponse.getUnsyncByteArrayOutputStream(); InputStream is = new UnsyncByteArrayInputStream(ubaos.unsafeGetByteArray(), 0, ubaos.size()); ServletResponseUtil.sendFile( request, response, renderResponseImpl.getResourceName(), is, renderResponseImpl.getContentType()); } else if (stringResponse.isCalledGetWriter()) { byte[] content = stringResponse.getString().getBytes(StringPool.UTF8); ServletResponseUtil.sendFile( request, response, renderResponseImpl.getResourceName(), content, renderResponseImpl.getContentType()); } renderRequestImpl.cleanUp(); }