This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
When I think of a web server and an application server, I think of Apache as a web server, and JBoss or WebSphere as teh application server.
The web server simply servers up files. You as a web server for an HTML file or mp3 file, it can server it to you. Web servers simply map request to files, without implementing any logic. Of course, sometimes you see PHP or CGI scripts run on a web server, but that's all artificial intelligence stuff. Web servers are really about as intelligent as a male model.
For logic, or real intelligent processing, an application server is needed. JBoss, WebSPhere, WebLogic and the like are all application servers, not web server. These are J2EE based application servers, and are responsible for running JSPs, Servlets, and EJBs. In my definition, JSPs and Servlets can not run on a web server.
When dealing with web based requests, before tunneling through to our application server, a client will always hit a web server first. The J2EE application server does not replace the need for a web server. A web server remains as pivotal a part of the J2EE architecture as ever.
Web servers are great at doing one thing: serving up files. A web server takes requests from clients, maps that request to a file on the file system, and then sends that file back to the client.
If you want an html file, a web server can efficiently and reliably find that file and send it back to you. If you need an image, a web server can serve it up to you as well. You want to download a zip file or a pdf file quickly and efficiently? A web server can make that happen.
Unfortunately though, your web server is about as intelligent as a male model. A web server can serve up static files until the cows come home, but ask your web server to add �one plus one� and you�ll be waiting there for a very, very long time.
If our applications use any images, HTML, pdf or zip files, we like to keep all of those static files on the web server. If we need some logic or dynamic content in our applications, we will delegate to our Servlets, JSPs, EJBs and JavaBeans that are running on our Application Server.
Now here is the dilemma. Our application server contains all of our Servlets and JSPs, but all of the requests go through the web server, and the web server, not being a very clever machine, tries to handle all requests, regardless of whether the request is for an image, html file, or to our detriment, a Servlet or a JSP....
[ November 12, 2006: Message edited by: Cameron W. McKenzie ] [ November 12, 2006: Message edited by: Cameron W. McKenzie ]