Choosing a Java Application Server
I've "looked into" JBoss, Glassfish, Geronimo, Tomcat, etc. but the truth is I don't know really even know what I'm looking for or what might make one JAS "better" than another.  


Some characteristics of my application that I know are relevant - 

 * will have thousands of TCP connections and a thread count that is O(N) in the number of those connections that have activity over them.  
 * As such the application needs to know when it has enough resources to take on more connections and when it needs to drop connections before throwing an out of memory exception.  
 * Will also need to provision the users connected between machines but that might be out of scope for what a JAS can accomplish
 * *not* a web-app, this is for a long-running backend process
 * on Linux

I understand that an application server can do this sort of resource management but I have no idea how, or how to turn these business/technical requirements into a feature list I should be looking for in prospective application servers.  Obviously this topic is very new to me, and I'm still breaking through the introductory materials on it all.

Choosing a Java Application Server
===

I've "looked into" JBoss, Glassfish, Geronimo, Tomcat, etc. but the truth is I don't know really even know what I'm looking for or what might make one JAS "better" than another.  


Some characteristics of my application that I know are relevant - 

 * will have thousands of TCP connections and a thread count that is O(N) in the number of those connections that have activity over them.  
 * As such the application needs to know when it has enough resources to take on more connections and when it needs to drop connections before throwing an out of memory exception.  
 * Will also need to provision the users connected between machines but that might be out of scope for what a JAS can accomplish
 * *not* a web-app, this is for a long-running backend process
 * on Linux

I understand that an application server can do this sort of resource management but I have no idea how, or how to turn these business/technical requirements into a feature list I should be looking for in prospective application servers.  Obviously this topic is very new to me, and I'm still breaking through the introductory materials on it all.
