What are some strategies for developing 24x7 applications using JSP?

Prasad Thammineni

One of the basic requirements for developing 24x7 applications is high-availability or reduced single-point of failure. The other attribute which is also considered along with high-avaliablity is scalabilty. Only high-availability will be addressed here.

Both application design and deployment architecture dictate whether an application is 24x7 or not.

Application Deployment:
All tiers of the application - web server, application server and database server, should be sized and configured appropriately in order to guarantee 24x7. The deployment architecture at each tier should feature at least 2 nodes or machines in a cluster.

Your JSP application should be deployed on a Servlet engine which supports clustering like say, IBM's WebSphere Application Server Advanced Edition. Your database server should also support deployment within a cluster - like Oracle, DB2 UDB or SQL Server. All popular Web Servers support deployment within a cluster - Apache, IIS, Netscape Enterprise Server etc.

Application Design:
The JSP features that one selects during implementation of a web application have a direct influence on the 24x7 nature of a site. Especially, HTTP session management. If Servlet sessions are being used to manage user state (like a shopping cart), the state should be made persistent in order for the state to be reconstructed in the event of a node failure. Selecting a servlet engine which supports persistent sessions would make persistent session implementation easier.

This is just the tip of the iceberg when it comes to addressing 24x7 applications. We have not yet discussed scalabilty, redundant Internet connections etc.

For an illustrated explanation of how high-availability can be implemented refer to the IBM redbook - "Servlet/JSP/EJB Design and Implementation Guide , SG24-5754-00" at http://www.redbooks.ibm.com/redpieces/abstracts/sg245754.html

Also, check out the white paper - "Achieving Scalability and High Availability for E-Commerce and Other Web Applications - Clustering the BEA WebLogic Application Server " at http://www.bea.com/products/weblogic/server/clustering.pdf