You might be getting hung up on semantics too much.
Strictly speaking, a web server does not have a servlet engine or container. A web server handles http requests, and maps those requests to files. Requests for Servlets or
JSP's are then directed to an application server such as
Tomcat. Apache is a web server, and it does not contain a Servlet engine.
Portlets run in a portlet container. All the services of the portal server are provided to a portlet through the container. Without the container, a portlet could not run.
If you're quoting the spec, here's a snippet from the JSR286 specification (Portal 2.0)
A portlet container runs portlets and provides them with the required
runtime environment. A portlet container contains portlets and
manages their lifecycle. It also provides persistent storage for portlet
preferences. A portlet container receives requests from the portal to
execute requests on the portlets hosted by it.
A portlet container is not responsible for aggregating the content
produced by the portlets. It is the responsibility of the portal to handle
the aggregation.
A portal and a portlet container can be built together as a single
component of an application suite or as two separate components of a
portal application.
If a portal server runs portlets, it needs a portlet container. I guess, theoretically, you could have a portal server that doesn't run portlets, in which case, I guess it wouldn't need a portlet container. Of course, what good would a portal server be if it didn't run portlets?
-Cameron McKenzie
[ July 06, 2007: Message edited by: Cameron McKenzie ]