[Back to Intro] [Web Server Details] [Application Server] [Tools] [Reports] [Performance Elements]
What & How of Servers
The servers involved
in handling and processing a user's request break down into a few basic types,
each of which may have one or more tasks it solves. This flexibility gives developers a great deal of power over
how applications will be created and deployed, but also leads to confusion over
what server is able to, or should, perform a specific task.
Starting at the
basic level, a user is typically submitting a request to a system through a
web browser. (We are conveniently ignoring all other types of clients (RMI,
CORBA, COM/DCOM, Custom, etc..) for the time being for purposes of clarity.)
The web request must be received
by a Web Server (otherwise known as an HTTP Server) of some sort.
This web server must handle standard HTTP requests and responses, typically
returning HTML to the calling user. Code
that executes within the server environment may be CGI driven, Servlets, ASP,
or some other server-side programming language, but the end result is that the
web server will pass back HTML to the user.
The web server
may need to execute an application in response to the users request. It
may be generating a list of news items, or handling a form submission to a guest
book. If the server application is written as a Java Servlet, it will
need a place to execute, and this place is typically called a Servlet Engine.
Depending on the web server, this
engine may be internal, external, or a completely different product. This
engine is continually running, unlike a traditional CGI environment where a
CGI script is started upon each request to the server. This
persistence gives a servlet connection and thread pooling, as well as an easy
way to maintain state between each HTTP request. JSP
pages are usually tied in with the servlet engine, and would execute within
the same space/application as the servlets.
There are many
products that handle the web serving and the servlet engine in different manners.
Netscape/iPlanet Enterprise Server
builds the servlet engine directly into the web server and runs within the same
process space. Apache requires
that a servlet engine run in an external process, and will communicate to the
engine via TCP/IP sockets. Other
servers, such as MS IIS don't officially support servlets, and require add-on
products to add that capability.
When you move on
to Enterprise JavaBeans (and other J2EE components like JMS and CORBA) you move
into the application server space. An
Application Server is any server that supplies additional functionality
related to enterprise computing -- for instance, load balancing, database access
classes, transaction processing, messaging, and so on.
EJB Application
Servers provide an EJB container, which is the environment that beans will
execute in, and this container will manage transactions, thread pools, and other
issues as necessary. These application
servers are usually stand-alone products, and developers would tie their servlets/JSP
pages to the EJB components via remote object access APIs. Depending on the
application server, programmers may use CORBA or RMI to talk to their beans,
but the baseline standard is to use JNDI to locate and create EJB references
as necessary.
Now, one thing
that confuses the issue is that many application server providers include some
or all of these components in their product. If you look at WebLogic (http://www.beasys.com/) you will find
that WebLogic contains a web server, servlet engine, JSP processor, JMS facility,
as well as an EJB container. Theoretically
a product like this could be used to handle all aspects of site development.
In practice, you would most likely
use this type of product to manage/serve EJB instances, while dedicated web
servers to handle the specific HTTP requests.
What is the
difference between an Application Server and a Web Server?
A
Web Server understands and supports only HTTP protocol whereas an Application
Server supports HTTP,TCP/IP and many more protocols. Also many more features such as Caches, Clusters, Load Balancing
are available with Application Servers which are not available in Web Servers.
We can also Configure Application
Servers to work as Web Server. In
short, an Application Server is a super set of which Web Server is a sub set.