我已经使用Liferay大约2年了,现在用于内部应用程序。在首次发布之前,我们在开发周期中多次进行过相同的讨论。我们不得不与Liferay战斗几次,有时是因为我们自己的知识不足,有时是因为Portlet环境,有时是因为Liferay。
如果您想要可以从门户获得的多个应用程序的布局选项,那么您当然应该使用Liferay。如果您正在编写单个应用程序,那么我可能不会使用Liferay。我认为一些Liferay和一些没有的混合是迄今为止最糟糕的选择。
我们可能没有充分利用Liferay的功能,但如果这是您的第一个Liferay应用程序,那么由于学习曲线,您也可能不会这样做。我们最初希望为应用程序的不同方面提供许多不同的 Portlet,但由于在开发过程中缺乏良好的 Portlet 间通信机制(JSR-286 之前),我们最终编写了一个应用程序。现在我们最终在那条船上,我希望我们没有Liferay,因为我们真正使用的只是一些用户管理功能。
我们使用JSF和facelets(对我们来说都是新技术,所以疼痛可能是自我引起的),虽然我们在这方面做得更好,但似乎有一些箍我们必须跳过才能让它在Portlet中正常工作;在常规的Web应用程序环境中不必发生的事情。对于许多框架来说,Portlet 支持似乎是事后才想到的。这显然不是 Liferay 特有的,它只是在 Portlet 环境中工作的副产品。
在使用Spring MVC,Struts,Faces,Wicket等的Web应用程序中,您将对所有内容拥有更多的控制权,但也要负责实现更多的东西。
在 Portlet 中,您将受到 JSR-168 和/或 JSR-286 条款的约束。门户容器将为您提供一些功能,例如用户身份验证,但 IMO,用于用户身份验证的整个门户太重了。我看到门户的强大功能是允许用户自定义多个应用程序的视图,而不是呈现单个应用程序。
您应该查看与 Portlet 相关的规范,看看它是否符合您的需要。
http://developers.sun.com/portalserver/reference/techart/jsr168/