The last line of the FAQ rings true to me:
To sum it up, the terms do exist but need to be considered in the context of their use in order to understand what they really mean. Terms may have different meanings in different shops, or even among different teams and individuals. Our infrastructure guys say a Web Server serves static files and anything with
Java is an App Server. On one project the AD guys ignore IHS because they serve no static content, call the Servlet Container the Web Server because it generates HTML and has HTTP dependencies and call the
EJB container the App server.
This causes problems (!) if we don't define terms at the start of every engagement.