Portlets are run inside a portlet container (Pluto). This container provides the portlet with the required runtime environment. The portlet container manages the life cycle of all the portlets and provides interfaces for portlets to call into. The container also invokes methods on portlets targeted by an end-user interaction with the portal page. The portlet container passes on requests from the portal to the hosted portlets. The portlet container does not aggregate the content produced by the portlets; that is the portal’s job.
The following diagram depicts the architectural components of Pluto 2.0. Notice that the Portlet Container, Pluto, is embedded inside a Portal. Then cross-context (across web applications) request dispatches are made to render the portlet contents, as portlets will normally reside in a different applications from the portal and container. Depending on the implementation, often a PortletServlet is required, as shown below, in the class loader of the portlet application. This servlet is actually a part of the Pluto container implementation.