Application Servers and Three-Tier Web Site Architectures

The logical evolution from web server scripting was the definition of a separate role for an application server, resulting in a three-tier architecture shown in Figure 22-2. The web server retains its primary responsibility for locating and serving up static web pages and static pieces of web pages from its files. When application processing is required to determine which information to display or to process information supplied by the user, the web server invokes a separate application server to perform the processing. In a smaller, lower-volume web site, the application server may run as a separate process on the same physical server system as the web server. In the more general case, used by larger web sites, the web server and application server will run on two different server computers, typically connected by a high-speed local area network. In either configuration, the web server passes requests in the form of messages to the application server, and receives back responses in the form of HTML contents to be displayed on the page.

In the early days of application servers, there were a wide range of different application server products. Some servers required that applications be written in C or C++. Others required the use of Java. The interface between the application server and the web server was well defined by the APIs of the two leading web server vendors, Netscape and Microsoft. But all other aspects—from programming language to the supporting services provided by the application server to the API for database access—were not standardized.

Sun Microsystem’s introduction of Enterprise Java Beans (EJBs) and the Java2 Enterprise Edition (J2EE) specification based on them began the standardization of application servers. EJBs built on the mushrooming popularity of Java as a programming language. The specification came from Sun, one of the leading server vendors and a company widely recognized for its leadership in Internet technologies. The specifications also contained a standardized API for database access, one of the most important functions provided by an application server, in the form of Java Database Connectivity (JDBC).

Within a short time, application servers based on the J2EE specification pulled ahead in the market. Vendors who had taken an alternative approach augmented their products with Java capability, and eventually abandoned their proprietary products for a J2EE-based strategy. A short time later, the application server market began a round of consolidation. Sun itself acquired NetDynamics, one of the pioneering J2EE application server vendors. BEA Systems, a leading vendor of software middleware for transaction processing, acquired WebLogic, another application server pioneer. Netscape, which provided one of the leading web servers, filled out its product line by acquiring Kiva, another early application server market leader.

Later, when AOL acquired Netscape and then formed a joint venture with Sun, both of these J2EE application server products came under common management at Sun, eventually merging into the Sun iPlanet application server (later rebranded the SunONE application server). Hewlett-Packard followed with its own acquisition of Bluestone, another application server vendor. IBM departed from the acquisition path by building its own application server, marketed under the WebSphere brand name. Oracle also introduced its own internally developed product, the Oracle Application Server, although much of its software was replaced by purchased third-party components over time as Oracle struggled to establish its position.

Over the course of several years of aggressive competition, the J2EE specification continued to evolve, including expanded features for application server database access. BEA’s WebLogic and IBM’s WebSphere emerged as the dominant players, with roughly equal market share. Products from Sun, Oracle, and a dozen smaller vendors divided up the remainder of the market. Every significant application server product complied with the J2EE specification, and provided JDBC-based facilities for database access.

Source: Liang Y. Daniel (2013), Introduction to programming with SQL, Pearson; 3rd edition.

Leave a Reply

Your email address will not be published. Required fields are marked *