Apache Http Server Java


Verifying Apache HTTP Server releases. API Documentation¶ A Doxygen reference dictionary for the Apache HTTP Server API; Historical Documents¶ An extremely obselete draft of the project plan. Notes on the 1.3 API. The old to-do list of the Apache developers. Old voting guidelines. Apache is a popular open-source, cross-platform web server that is, by the numbers, the most popular web server in existence. It’s actively maintained by the Apache Software Foundation. Some high-profile companies using Apache include Cisco, IBM, Salesforce, General Electric, Adobe, VMware, Xerox, LinkedIn, Facebook, Hewlett-Packard, AT&T.

Learn how web servers and application servers are different, how they’re the same, and how they combine to deliver most of the applications you use today.

Web server vs. application server: What is the difference?

Using Java Servlets with Apache Servlets are Java programs that execute in a Web server in response to requests from a Web browser. Servlets are more powerful than CGI programs commonly used as gateways between Web servers and other services such as databases. HTTPServer (int port, java.net.InetAddress bindAddress) Creates a new HTTPServer. Methods inherited from class org.apache.excalibur.instrument. Verifying Apache HTTP Server releases. API Documentation¶ A Doxygen reference dictionary for the Apache HTTP Server API; Historical Documents¶ An extremely obselete draft of the project plan. Notes on the 1.3 API. The old to-do list of the Apache developers. Old voting guidelines.

By strict definition, a web server is a common subset of an application server.

Apache Http Server Java

A web server delivers static web content—e.g., HTML pages, files, images, video—primarily in response to hypertext transfer protocol (HTTP) requests from a web browser.

An application server typically can deliver web content too, but its primary job is to enable interaction between end-user clients and server-side application code—the code representing what is often called business logic—to generate and deliver dynamic content, such as transaction results, decision support, or real-time analytics. The client for an application server can be the application’s own end-user UI, a web browser, or a mobile app, and the client-server interaction can occur via any number of communication protocols.

In practice, however, the line between web servers and application servers has become fuzzier, particularly as the web browser has emerged as the application client of choice and as user expectations of web applications and web application performance have grown.

Most web servers support plug-ins for scripting languages (e.g., ASP, JSP, PHP, Perl) that enable the web server to generate dynamic content based on server-side logic. And an increasing number of application servers not only incorporate web server capabilities, but use HTTP as their primary protocol and support other protocols (e.g., CGI and CGI variants) for interfacing with web servers. They also allow web applications to leverage services like reverse proxy, clustering, redundancy, and load balancing—services that improve performance and reliability and allow developers to focus less on infrastructure and more on coding.

To make matters more confusing, many web servers and some application servers are referred to, or refer to themselves, as web application servers.

The bottom line is that today’s most popular web servers and application servers are hybrids of both. Most of the increasingly rich applications you use today feature a combination of static web content and dynamic application content, delivered via a combination of web server and application server technologies.

Open source web servers and application servers


The market is flooded with web servers and application servers—too many to list here. Instead, we thought it might be more valuable to list the most popular free, open source options available:


Nginx (Link resides outside IBM) is an open source web server that includes reverse proxy, load balancing, mail proxy, and HTTP cache capabilities. Commercial, supported versions of Nginx are also available, at Nginx, Inc. (Link resides outside IBM). According to the internet research and cybercrime prevention company Netcraft (Link resides outside IBM), Nginx served or proxied nearly 38% of all the world’s websites and over 25% of the million busiest sites as of December, 2019. World-known enterprise Nginx users include Dropbox, Netflix, and Zynga.

Apache HTTP Server

First released in 1995, Apache HTTP Server (also just known as ‘Apache’) is another very popular free, open source web server that, until very recently, powered more websites than any other web server—71% at its peak—before being overtaken by Nginx in April, 2019. As of December 2019, Apache served over 24% of all sites worldwide and 31% of the million busiest sites.

Apache Tomcat

Apache Tomcat (Link resides outside IBM) is an open source application server that executes Java Servlets, renders and delivers web pages that include JavaServer Page code, and serves Java Enterprise Edition (Java EE) applications. Released in 1998, Tomcat is the most widely used open source Java application server.


Glassfish (Link resides outside IBM) is an open source Java EE application server launched by Sun Microsystems in 2006, and it is hosted today by the Eclipse Foundation (Link resides outside IBM). Like most Java application servers, Glassfish supports Java Servlets, Enterprise JavaBeans (EJB), and more, but it can also function as a web server, serving up web content in response to HTTP requests.

Web servers, application servers, and IBM Cloud®

Apache Web Server Java Spring

Atom app. Web servers and application servers will remain part of application modernization as the demand for better customer experiences and more applications impacts business and IT operations. When it comes to meeting such demands, a move toward greater automation will help. Ideally, it would start with small, measurably successful projects, which you can then scale and optimize for other processes and in other parts of your organization. 

Working with IBM, you’ll have access to AI-powered automation capabilities, including prebuilt workflows, to help accelerate innovation by making every process more intelligent. 


Take the next step:

  • IBM offers HTTP Server, a web server included with other products such as IBM® WebSphere® Application Server. IBM HTTP Server is based on the Apache HTTP Server and provides all Apache features, plus IBM enhancements. Find out more about IBM HTTP Server Powered by Apache, Version 9.0.
  • IBM WebSphere Liberty is a Java EE application server designed for cloud native applications and microservices. WebSphere Liberty is built on the Open Liberty project (Link resides outside IBM) that provides an open source Java EE and MicroProfile core.
  • Read about the results of one company’s transition to the IBM WebSphere Application Server Liberty Profile on IBM Cloud.
  • Register to get the IBM Application Modernization Field Guide (PDF, 2.9 MB) to learn how to accelerate modernization, improve developer productivity and enhance operational efficiency and standardization. 
  • Check out a blog post about IBM WebSphere Hybrid Edition, which enables a phased approach to digital transformation.

Apache Web Server Java

Get started with an IBM Cloud account today.

Featured products


Since 1994, the Java programming language evolved and became a valid tool to develop reliable and performant server applications as opposed to just applets and client applications. The major disadvantage of the Java platform is that still today the only portable way to start a Java application relies on a single point of entry: the public static void main(String[]) method.

Having a single-point of entry is a valid solution for client applications, where interactively a user can command to the application to quit (which can terminate the Virtual Machine process at calling the System.exit(int) method), but in those cases where the application is not interactive (server applications) there is currently no portable way to notify the Virtual Machine of its imminent shutdown.

A server application written in Java might have to perform several tasks before being able to shutdown the Virtual Machine process. For example in the case of a Servlet container, before the VM process is shut down, sessions might need to be serialized to disk, and web applications need to be destroyed.

One common solution to this problem is to create (for example) a ServerSocket and wait for a particular message to be issued. When the message is received, all operations required to shut down the server applications are performed and at the end the System.exit method is called to terminate the Virtual Machine process. This method however, has several disadvantages and risks:

Apache Http Server Java Download

  • In case of a system-wide shutdown, the Virtual Machine process may be shut down directly by the operating system without notifying the running server application.
  • If an attacker finds out the shutdown message to send to the server and discovers a way to send this message, he can easily interrupt the server's operation, bypassing all the security restrictions implemented in the operating system.

Apache Http Server Java Tutorial

Most multi-user operating systems already have a way in which server applications are started and stopped. Under Unix based operating systems non interactive server applications are called daemons and are controlled by the operating system with a set of specified signals. Under Windows such programs are called services and are controlled by appropriate calls to specific functions defined in the application binary, but although the ways of dealing with the problem are different, in both cases the operating system can notify a server application of its imminent shutdown, and the application has the ability to perform certain tasks before its process of execution is destroyed.