I know this may be a recurring topic, but I have read a lot of articles and I still have doubts. Also, I would like to hear more recent opinions about this.
The main requirements of my application server are: flexible configuration, support for a extremely high number of concurrent users. It will be a system for the mobile communications industry, so it must have high availability as well.
I am going to develop a Java EE application and Open Source Applications Servers are my only option. I have used GlassFish for a very small project and I really liked it.
My current thoughts:
All can support large user bases and all will do 95% of use cases well.
I'd start by default at the top and move down the list as your situation/requirements get more complex e.g. how much Java EE support you need
Also if you are careful on not using any custom features changing at a later point should be relatively simple.
This is purely based on my personal experience and is a bit simplistic - one could write books on this!