1. Portal infrastructure consists of a portlet container and portal server. Portal server is responsible for rendering a portal page and portlet container manages portlet lifecycle. A typical web application server has a servlet container which manages servlet lifecycle. Typically, portlet container runs on top of a servlet container.
2. You can use an MVC web framework (JSF 2/Wicket) or portlet framework (Spring Portlet MVC) to develop portlets.
3. If you are using portal server specific services, then portability can be an issue. But, you can always design portlets to adapt to changes. As most portlet containers are Portlet 2.0 compliant, so your portlets can be ported to any Portlet 2.0 compliant container, with little or no change. In chapter 3 and 4 I have covered JetSpeed, Liferay and Glassfish with OpenPortal Portlet container, to demonstrate that even when container is portlet 2.0 compliant, there could be some difference which you'll need to take care when porting. When I started writing the book, i only planned to use Liferay as the reference portal server. So, all the examples I created were targeted towards Liferay. Later, I modified the examples to make them work on GateIn portal server. If you compare the example code for both the servers, you'll find that I had to make little change to adapt the same examples to work on GateIn. You'll find link to GateIn portal examples here: http://code.google.com/p/portletsinaction/ 4. Ideally, portals provide their own security infrastructure. If the security infrastructure of portal meets your portal requirements, then you don't need to add any extra layer of security.
5. Struts/JSF are web frameworks and any application developing using web frameworks can be exposed as a portlet by using an appropriate portlet bridge. As the bridge hides the different lifecycle phases of portlets, the support for portlet development in Struts/JSF is not intuitive and adds complexity in understanding how it handles different portlet lifecycle phases. On the other hand, Spring portlet MVC framework is dedicated to portlet development. If you are experienced in developing Spring Web MVC application, then you can quickly get started with Spring Portlet MVC. You'll find concept of handler/controllers, handler mappings, exception resolver, view resolver, and so on, as you see in Spring Web MVC.