Application Server

CategoryArchitecture Component

An Application Server is a software platform that provides runtime environment for web applications. As part of enterprise middleware stack, it plays a key role in providing reliability, scalability and management facilities to mid-tier enterprise systems.


Component Overview


Quality Services for Dynamic Content

Application Servers have proven themselves as reliable platforms for operating web and enterprise applications serving high volumes of requests from the Internet and on the internal network. They allowed to realize the full potential of Java runtime environment by taking on the responsibility of managing its scalability and remote communications. Applications Servers also provided a layer of indirection between the client and the database, by offering user authentication and connection pooling services to the mid-tier business logic.

To date Application Servers power enterprise portals and business process engines that enable customer service and core operations for the largest organizations around the world. A key area where Application Servers have been able to deliver their biggest value is Service-oriented Architecture, with their ability to host a Web Services Stack and scale it to securely serve thousands of requests in web and enterprise contexts.

Following is a shortlist of key features provided by an Application Server to web-enabled applications:

  • Web Container — runtime environment for web applications and related web-facing resources.
  • Database Access — connection pooling to enable scalable, secure access to persistent stores.
  • Message Queuing — messaging platform for asynchronous communication between modules and systems.
  • Resource Adapters — runtime environment for proprietary connectors to enterprise backend systems.
  • Web Services Stack — technology framework to enable web services exchange using standard protocols.
  • Security Providers — authentication and authorization services for managed application components.
  • Service Clustering — management layer for operating multiple server instances as a single service.
  • Application Control — hot deployment and activation of managed applications and resource adapters.
  • Runtime Monitoring — instrumentation and observation of server and application runtime metrics.

Java, as a programming language, has no built-in features that handle the runtime environment, and minimal related facilities bundled with the virtual machine. On the other hand, Application Servers provide management of solution logic at runtime, so it is not hard-coded into the application but stored in the deployment descriptors instead. The same Java code is used differently in various contexts, without having to recompile the code.

Some examples of Java-based Application Servers are: web container — Apache Tomcat, Eclipse Jetty and Undertow; enterprise middleware platform — JBoss EAP, WebLogic Server and WebSphere Application Server.

server

Implementing a highly efficient runtime environment allows developers to focus on the business logic.

Application components exposed as web services benefit from a runtime environment that supports a wide range of open standards and ensures service interoperability.

Application Servers leverage the concept of purpose-built containers, to partition the business logic by type and isolate it from the operating system facilities.

Common infrastructure resources are utilized in an optimal way if they are managed by an Application Server, which shares their capacity among the deployed business applications.