📄 portletservlet.java.svn-base
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.pluto.core;import java.io.IOException;import java.util.Iterator;import java.util.Timer;import java.util.TimerTask;import javax.portlet.ActionRequest;import javax.portlet.ActionResponse;import javax.portlet.EventPortlet;import javax.portlet.EventRequest;import javax.portlet.EventResponse;import javax.portlet.Portlet;import javax.portlet.PortletException;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import javax.portlet.ResourceRequest;import javax.portlet.ResourceResponse;import javax.portlet.ResourceServingPortlet;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.pluto.Constants;import org.apache.pluto.ContainerInvocation;import org.apache.pluto.PortletContainerException;import org.apache.pluto.PortletWindow;import org.apache.pluto.internal.InternalPortletConfig;import org.apache.pluto.internal.InternalPortletContext;import org.apache.pluto.internal.InternalPortletRequest;import org.apache.pluto.internal.InternalPortletResponse;import org.apache.pluto.om.portlet.PortletDefinition;import org.apache.pluto.services.PlutoServices;import org.apache.pluto.spi.ContainerInvocationService;import org.apache.pluto.spi.FilterManager;import org.apache.pluto.spi.optional.AdministrativeRequestListener;import org.apache.pluto.spi.optional.PortalAdministrationService;import org.apache.pluto.spi.optional.PortletContextService;import org.apache.pluto.spi.optional.PortletInvocationEvent;import org.apache.pluto.spi.optional.PortletInvocationListener;/** * Portlet Invocation Servlet. This servlet recieves cross context requests from * the the container and services the portlet request for the specified method. * * @version 1.1 * @since 09/22/2004 */public class PortletServlet extends HttpServlet{ // Private Member Variables ------------------------------------------------ /** * The portlet name as defined in the portlet app descriptor. */ private String portletName; /** * The portlet instance wrapped by this servlet. */ private Portlet portlet; /** * The internal portlet context instance. */ private InternalPortletContext portletContext; /** * The internal portlet config instance. */ private InternalPortletConfig portletConfig; /** * The Event Portlet instance (the same object as portlet) wrapped by this * servlet. */ private EventPortlet eventPortlet = null; /** The resource serving portlet instance wrapped by this servlet. */ private ResourceServingPortlet resourceServingPortlet = null; private PortletContextService contextService; private ContainerInvocationService containerInvocationService; private boolean started = false; private Timer startTimer = null; // HttpServlet Impl -------------------------------------------------------- public String getServletInfo() { return "Pluto PortletServlet [" + portletName + "]"; } /** * Initialize the portlet invocation servlet. * * @throws ServletException * if an error occurs while loading portlet. */ public void init(ServletConfig config) throws ServletException { // Call the super initialization method. super.init(config); // Retrieve portlet name as defined as an initialization parameter. portletName = getInitParameter("portlet-name"); started = false; startTimer = new Timer(true); final ServletContext servletContext = getServletContext(); final ClassLoader paClassLoader = Thread.currentThread().getContextClassLoader(); startTimer.schedule(new TimerTask() { public void run() { synchronized(servletContext) { if (startTimer != null) { if (attemptRegistration(servletContext, paClassLoader )) { startTimer.cancel(); startTimer = null; } } } } }, 1, 10000); } protected boolean attemptRegistration(ServletContext context, ClassLoader paClassLoader) { if (PlutoServices.getServices() != null) { contextService = PlutoServices.getServices().getPortletContextService(); containerInvocationService = PlutoServices.getServices().getContainerInvocationService(); try { ServletConfig sConfig = getServletConfig(); if (sConfig == null) { String msg = "Problem obtaining servlet configuration(getServletConfig() returns null)."; context.log(msg); return true; } String applicationName = contextService.register(sConfig); started = true; portletContext = (InternalPortletContext) contextService.getPortletContext(applicationName); portletConfig = (InternalPortletConfig) contextService.getPortletConfig(applicationName, portletName); } catch (PortletContainerException ex) { context.log(ex.getMessage(),ex); return true; } PortletDefinition portletDD = portletConfig.getPortletDefinition();// Create and initialize the portlet wrapped in the servlet. try { Class clazz = paClassLoader.loadClass((portletDD.getPortletClass())); portlet = (Portlet) clazz.newInstance(); portlet.init(portletConfig); initializeEventPortlet(); initializeResourceServingPortlet(); return true; } catch (Exception ex) { context.log(ex.getMessage(),ex); // take out of service portlet = null; portletConfig = null; return true; } } return false; } public void destroy() { synchronized(getServletContext()) { if ( startTimer != null ) { startTimer.cancel(); startTimer = null; } else if ( started && portletContext != null) { started = false; contextService.unregister(portletContext); if (portlet != null) { try { portlet.destroy(); } catch (Exception e) { // ignore } portlet = null; } } super.destroy(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { dispatch(request, response);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -