📄 portletservlet.java
字号:
log.debug("in PortletServlet: do processAction " + pid); PortletPreferencesManager prefsManager = appPortlet.getPortletPreferencesManager(pid, userId, false); request.setAttribute(SportletProperties.PORTLET_PREFERENCES_MANAGER, prefsManager); processAction(portlet, portalContext, request, response, cid, pid); } } else { // create portlet preferences manager PortletPreferencesManager prefsManager = appPortlet.getPortletPreferencesManager(pid, userId, true); request.setAttribute(SportletProperties.PORTLET_PREFERENCES_MANAGER, prefsManager); render(portlet, request, response, pid); } } else { log.error("in PortletServlet: service(): No " + SportletProperties.PORTLET_LIFECYCLE_METHOD + " found in request!"); } } protected void processAction(Portlet portlet, PortalContext portalContext, HttpServletRequest request, HttpServletResponse response, String cid, String pid) throws ServletException { ActionRequestImpl actionRequest = new ActionRequestImpl(request, portletContext); ActionResponse actionResponse = new ActionResponseImpl(request, response); String webappname = portletWebApp.getWebApplicationName(); PersistenceManagerRdbms pm = pms.getPersistenceManagerRdbms(webappname); try { if (pm != null) { log.debug("Starting a database transaction for webapp: " + webappname); pm.beginTransaction(); } log.debug("in PortletServlet: action handling portlet " + pid); // INVOKE PORTLET ACTION portlet.processAction(actionRequest, actionResponse); Map params = ((ActionResponseImpl) actionResponse).getRenderParameters(); request.setAttribute(SportletProperties.RENDER_PARAM_PREFIX + pid + "_" + cid, params); log.debug("placing render params in session : key= " + SportletProperties.RENDER_PARAM_PREFIX + pid + "_" + cid); // Commit and cleanup log.info("Committing the database transaction"); if (pm != null) pm.endTransaction(); } catch (Throwable ex) { //log.error("Error during processAction:", ex); request.setAttribute(SportletProperties.PORTLETERROR + pid, ex); if (pm != null) { pm.endTransaction(); try { if (pm != null) pm.rollbackTransaction(); } catch (Throwable rbEx) { log.error("Could not rollback transaction after exception!", rbEx.getCause()); } } // Let others handle it... maybe another interceptor for exceptions? //throw new ServletException(ex.getCause()); } finally { try { redirect(request, response, actionRequest, actionResponse, portalContext); } catch (IOException e) { log.error("Unable to handle redirect", e); } } } protected void render(Portlet portlet, HttpServletRequest request, HttpServletResponse response, String pid) throws ServletException { RenderRequest renderRequest = new RenderRequestImpl(request, portletContext); RenderResponse renderResponse = new RenderResponseImpl(request, response); renderRequest.setAttribute(SportletProperties.RENDER_REQUEST, renderRequest); renderRequest.setAttribute(SportletProperties.RENDER_RESPONSE, renderResponse); log.debug("in PortletServlet: rendering portlet " + pid); if (renderRequest.getAttribute(SportletProperties.RESPONSE_COMMITTED) == null) { String webappname = portletWebApp.getWebApplicationName(); PersistenceManagerRdbms pm = pms.getPersistenceManagerRdbms(webappname); try { if (pm != null) pm.beginTransaction(); portlet.render(renderRequest, renderResponse); if (pm != null) pm.endTransaction(); } catch (UnavailableException e) { try { portlet.destroy(); } catch (Exception d) { log.error("in PortletServlet(): destroy caught exception: ", d); } } catch (Throwable ex) { //log.error("in render: caught exception: ", ex); try { if (pm != null) { log.info("Committing database transaction for webapp: " + portletWebApp.getWebApplicationName()); pm.endTransaction(); pm.rollbackTransaction(); } } catch (Throwable rbEx) { throw new ServletException("Could not rollback transaction after exception!", rbEx); } throw new ServletException(ex); } } } protected void doTitle(Portlet portlet, RenderRequest request, RenderResponse response) throws IOException, PortletException { Portlet por = (Portlet) portlet; if (por instanceof GenericPortlet) { GenericPortlet genPortlet = ((GenericPortlet) portlet); if (genPortlet.getPortletConfig() == null) throw new PortletException("Unable to get PortletConfig from Portlet"); ResourceBundle resBundle = genPortlet.getPortletConfig().getResourceBundle(request.getLocale()); String title = resBundle.getString("javax.portlet.title"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(title); } } protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { super.doGet(req, res); } protected void doPut(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { super.doPut(req, res); } protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { super.doPost(req, res); } protected void doTrace(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { super.doTrace(req, res); } protected void doDelete(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { super.doDelete(req, res); } protected void redirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse, ActionRequest actionRequest, ActionResponse actionResponse, PortalContext portalContext) throws IOException { if (actionResponse instanceof ActionResponseImpl) { ActionResponseImpl aResponse = (ActionResponseImpl) actionResponse; String location = aResponse.getRedirectLocation(); if (location != null) { javax.servlet.http.HttpServletResponse redirectResponse = servletResponse; while (redirectResponse instanceof javax.servlet.http.HttpServletResponseWrapper) { redirectResponse = (javax.servlet.http.HttpServletResponse) ((javax.servlet.http.HttpServletResponseWrapper) redirectResponse).getResponse(); } log.debug("redirecting to location= " + location); servletRequest.setAttribute(SportletProperties.PORTAL_REDIRECT_PATH, location); //redirectResponse.sendRedirect(location); } else { // redirect as a GET render url back to the portal PortletURL url = new PortletURLImpl(servletRequest, servletResponse, true); Map params = aResponse.getRenderParameters(); url.setParameters(params); servletRequest.setAttribute(SportletProperties.PORTAL_REDIRECT_PATH, url.toString()); } } } /** * Record the fact that a servlet context attribute was added. * * @param event The session attribute event */ public void attributeAdded(HttpSessionBindingEvent event) { log.debug("attributeAdded('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); } /** * Record the fact that a servlet context attribute was removed. * * @param event The session attribute event */ public void attributeRemoved(HttpSessionBindingEvent event) { log.debug("attributeRemoved('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); } /** * Record the fact that a servlet context attribute was replaced. * * @param event The session attribute event */ public void attributeReplaced(HttpSessionBindingEvent event) { log.debug("attributeReplaced('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); } /** * Record the fact that a session has been created. * * @param event The session event */ public void sessionCreated(HttpSessionEvent event) { log.debug("in PS sessionCreated('" + event.getSession().getId() + "')"); //sessionManager.sessionCreated(event); } /** * Record the fact that a session has been destroyed. * * @param event The session event */ public void sessionDestroyed(HttpSessionEvent event) { //sessionManager.sessionDestroyed(event); //loginService.sessionDestroyed(event.getSession()); log.debug("in PS sessionDestroyed('" + event.getSession().getId() + "')"); //HttpSession session = event.getSession(); //User user = (User) session.getAttribute(SportletProperties.PORTLET_USER); //System.err.println("user : " + user.getUserID() + " expired!"); //PortletLayoutEngine engine = PortletLayoutEngine.getDefault(); //engine.removeUser(user); //engine.logoutPortlets(event); } /** * Record the fact that a session has been created. * * @param event The session event */ public void sessionDidActivate(HttpSessionEvent event) { log.debug("sessionDidActivate('" + event.getSession().getId() + "')"); //sessionManager.sessionCreated(event); } /** * Record the fact that a session has been destroyed. * * @param event The session event */ public void sessionWillPassivate(HttpSessionEvent event) { //sessionManager.sessionDestroyed(event); //loginService.sessionDestroyed(event.getSession()); log.debug("sessionWillPassivate('" + event.getSession().getId() + "')"); //HttpSession session = event.getSession(); //User user = (User) session.getAttribute(SportletProperties.USER); //System.err.println("user : " + user.getUserID() + " expired!"); //PortletLayoutEngine engine = PortletLayoutEngine.getDefault(); //engine.removeUser(user); //engine.logoutPortlets(event); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -