What is Application Server and Web server?
The Web server:
A Web server’s delegation model is fairly simple. When a request comes into the Web server, the Web server simply passes the request to the program best able to handle it. The Web server doesn’t provide any functionality beyond simply providing an environment in which the server-side program can execute and pass back the generated responses. The server-side program usually provides for itself such functions as transaction processing, database connectivity, and messaging.
While a Web server may not itself support transactions or database connection pooling, it may employ various strategies for fault tolerance and scalability such as load balancing, caching, and clustering—features oftentimes erroneously assigned as features reserved only for application servers.
Eg: Apache HTTP Server, Sun ONE Web Server, iPlanet Web Server
The application server:
An application server exposes business logic to client applications through various protocols including HTTP, TCP/IP and RMI. While a Web server mainly deals with sending HTML for display in a Web browser, an application server provides access to business logic for use by client application programs. The application program can use this logic just as it would call a method on an object (or a function in the procedural world).
Such application server clients can include GUIs (graphical user interface) running on a PC, a Web server, or even other application servers. The information traveling back and forth between an application server and its client is not restricted to simple display markup. Instead, the information is program logic. Since the logic takes the form of data and method calls and not static HTML, the client can employ the exposed business logic however it wants.
In most cases, the server exposes this business logic through a component API, such as the EJB (Enterprise JavaBean) component model found on J2EE (Java 2 Platform, Enterprise Edition) application servers. Moreover, the application server manages its own resources. Such gate-keeping duties include security, transaction processing, resource pooling, and messaging.
Like a Web server, an application server may also employ various scalability and fault-tolerance techniques.
Difference between AppServer and a Web server:
- A Web server exclusively handles HTTP requests, whereas an application server serves business logic to application programs through any number of protocols. WebServer serves pages for viewing in web browser, application server exposes business logic for client applications through various protocols.
- WebServer delegation model is fairly simple, when the request comes into the webserver, it simply passes the request to the program best able to handle it(Server side program). It does not support transactions and database connection pooling.
- Application server is more capable of dynamic behavior than webserver. We can also configure application server to work as a webserver. Simply application server is a superset of webserver.
- WebServer can execute only web applications i.e. servlets and JSPs and has only a single container known as Web container which is used to interpret/execute web applications.
- Application server can execute Enterprise application, i,e (servlets, jsps, and EJBs) it is having two containers
- Web-Container (for interpreting/executing servlets and jsps)
- EJB-Container (for executing EJBs).It can perform operations like load balancing, transaction etc