According to JSR-168: Portlets are web components -like Servlets- specifically designed to be aggregated in the context of a composite page. Usually, many Portlets are invoked to in the single request of a Portal page. Each Portlet produces a fragment of markup that it s combined with the markup of other Portlets, all within the Portal page markup.
In other words, a portlet is an mini-application that provides some content that forms part of a portal page. These portlets are handled by portlet container.
A portal container:
- executes portlets,
- manages lifecylce of portles,
- provides them a runtime enviroment to portlets.
In order to execute and test the portlet container, we need a driver: the portal.
Requests from users are recieved by portal then this is directed to portlet container and these requests are executed on portlets. And portal (not portlet container) is responsible for bringing together all the content produced by portlets and present them to clients. So a portal is a web application (which can be deployed a servlet container like tomcat) which brings together contents from different portles and the communication between portal and portlets are achieved by portlet containers.
Here is a popular image I found on the google which summarizes whole concept:
(Image may not be available since the image link refers to an external source)
A portal does not only built a portal page from portlets but also provides:
- Advanced security configuration
- Single Sign On (SSO)
- Customizable look and feel
Although a portal and a portlet container are different units, they can be built together as a single component.
Here is the list of some open source portals:
Now it is time learn details, chose one of the paths below, my favorite is JetSpeed v2 tutorial. You can follow the instructions to master portals or just read fastly to have deeper knowldge on the concepts discussed.