A Web application runs within a Web container of a Web server. The Web
container provides the runtime environment through components that
provide naming context and life cycle management. Some Web servers may
also provide additional services such as security and concurrency
control. A Web server may work with an EJB server to provide some of
those services. A Web server, however, does not need to be located on
the same machine as an EJB server.
Web applications are composed of web components and other data such as
HTML pages. Web components can be servlets, JSP pages created with the
JavaServer Pages™ technology, web filters, and web event listeners.
These components typically execute in a web server and may respond to
HTTP requests from web clients. Servlets, JSP pages, and filters may be
used to generate HTML pages that are an application’s user interface.
They may also be used to generate XML or other format data that is
consumed by other application components
In Java:
Web Container or Servlet Container or Servlet Engine : is used to manage
the components like servlets, JSP.It is a part of the web server.
Web Server or HTTP Server: a server which is capable of handling
HTTP request send by a client and respond back with a HTTP response.
Application Server or App Server: can handle all application
operations between users and an organization's back end business
applications or databases.It is frequently viewed as part of a
three-tier application with:
Presentaiton tier, logic tier,Data tier.
Most of the times these terms Web Server and Application server are used interchangeably.
Following are some of the key differences in features of Web Server and Application Server:
- Web Server is designed to serve HTTP Content. App Server can also
serve HTTP Content but is not limited to just HTTP. It can be provided
other protocol support such as RMI/RPC
- Web Server is mostly designed to serve static content, though most
Web Servers have plugins to support scripting languages like Perl, PHP,
ASP, JSP etc. through which these servers can generate dynamic HTTP
content.
- Most of the application servers have Web Server as integral part of
them, that means App Server can do whatever Web Server is capable of.
Additionally App Server have components and features to support
Application level services such as Connection Pooling, Object Pooling,
Transaction Support, Messaging services etc.
- As web servers are well suited for static content and app servers
for dynamic content, most of the production environments have web server
acting as reverse proxy to app server. That means while servicing a
page request, static contents (such as images/Static HTML) are served by
web server that interprets the request. Using some kind of filtering
technique (mostly extension of requested resource) web server identifies
dynamic content request and transparently forwards to app server
Example of such configuration is Apache Tomcat HTTP Server and Oracle
(formerly BEA) WebLogic Server. Apache Tomcat HTTP Server is Web Server
and Oracle WebLogic is Application Server.
In some cases the servers are tightly integrated such as IIS and .NET
Runtime. IIS is web server. When equipped with .NET runtime
environment, IIS is capable of providing application services.