After extensive search, reading, comparing and trying, finally I limited my choices to the following three:

– exo platform
– Liferay
– uportal

All of them have JSR 168 support, which is my basic choosing criteria. Still they all have pros and cons:

– exo platform: the most technically advanced; has all the buzz words like JSR 168, JSR 170, WSRP, IOC, JSF etc; it uses PICO, the light-weight IOC framework; it also uses JSF as the portal presentation technology and has an eclipse plug in for developing (and hot deploy?) portlets. This is a combination of portal server and CMS. The cons is that it’s still not quite mature yet (in release 1.0 RC phase), and it’s difficult to find documentation on their web site. Another thing I am concerning about exo is the scalability– based on somebody’s load testing the result is not as good as liferay or UPortal when load increases– the reason is perhaps to do with use of EJB, caching, and so on.

–Liferay: I like their new architecture with integration of the spring framwework, hibernate etc, so that you have the benefits of Spring IOC and AOP, and can decouple the business logic from the deployment architecture– whether running in a servlet container or delegated by session EJBs. Also they have the biggest collection of ready-to-use portlets among the three, which can reduce lots of work on developing custom portlets. Liferay is a 6-year project , pretty mature and realworld-proved now. Their license model is business-friendly. The downside is that the JSR168 support has just been added recently , and there is no good JSR 170, WSRP support yet… Also I was told that the layout mechanism is not as flexible as exo’s.

– JASIG-Uportal: I don’t quite like the current “channel” concept which is to be replaced by JSR-168 compliant portlets. Uportal is designed for universities, this may help us a lot. Need to look at the design and avalable features to see how well it can be reused on pre-college school education. Their documetation is quite complete.

It’s difficult to decide at this moment. still need to download and try each of them one by one, and look into the source code, the supporting community etc.

I may also take a second look at openuss , which is integrated with liferay but seem to tie to JOnAs and Enthydra. Personally I prefer Tomcat+JBoss for Application servers.