You're really not going to get a useful answer to a question like that. Everybody's got their favorite library/technology that they're going to pitch, but that doesn't mean that it's appropriate in your case. It depends so much on the expertise of the team that will develop this, the expertise of the team that is going to maintain this, the infrastructure to be used, etc. - all of which we know nothing about.
Joined: Feb 01, 2005
Ulf is of course right. You can use Spring instead of Seam/EJB 3 and Struts 1, Struts 2, Spring MVC, Wicket, etc instead of JSF. You can also use Grails/Rails on top of a Java EE 5 server, so in theory it will still be a "Java EE 5" application.
I noted Seam/EJB 3 because it is more tightly integrated with Java EE 5 and it is also obviously my preferered platform. Some of my clients also choose to use EJB 3 and Spring together without Seam and the results are very good.
As I see it, the Seam/EJB 3 stack is simpler to learn but the Spring stack is more flexible. If you would like to work with components/events/AJAX, JSF is the way to go. If you don't, the other web frameworks are a toss-up. Wicket is particularly lightweight. You can consider Grails/Rails if you prefer dynamic languages but they are less performant and can be harder to maintain/debug, especially with larger teams. Grails/Rails is not something I recommend.
You can use plain Hibernate for persistence, but I really would not recommend it. Neither would I recommend TopLink, JDO, etc. Spring JDBC or iBATIS can be the right choice if you want to stay away from heavy ORM or have a legacy database. Otherwise, these don't make much sense either.