Apache Tomcat
Encyclopedia
Apache Tomcat is an open source
web server
and servlet container developed by the Apache Software Foundation
(ASF). Tomcat implements the Java Servlet
and the JavaServer Pages
(JSP) specifications from Oracle Corporation
, and provides a "pure Java
" HTTP
web server
environment for Java
code to run.
Tomcat should not be confused with the Apache web server
, which is a C
implementation of an HTTP web server; these two web servers are not bundled together, although they are frequently used together as part of a server application stack
. Apache Tomcat includes tools for configuration and management, but can also be configured by editing XML
configuration files.
. Catalina implements Sun Microsystems
' specifications for servlet
and JavaServer Pages
(JSP). In Tomcat, a Realm
element represents a "database" of usernames, passwords, and roles (similar to Unix groups) assigned to those users. Different implementations of Realm allow Catalina to be integrated into environments where such authentication information is already being created and maintained, and then utilize that information to implement Container Managed Security as described in the Servlet Specification...
port on the server and forwards the request to the Tomcat Engine to process the request and send back a response to the requesting client.
's JavaServer Pages
2.0 specification. Jasper parses JSP files to compile them into Java code as servlets (that can be handled by Catalina). At runtime, Jasper detects changes to JSP files and recompiles them.
, JSP parsing, performance and scalability. Native wrappers, known as "Tomcat Native", are available for Microsoft Windows
and Unix for platform integration.
and the Apache Ant
build tool.
Depending on the usage requirements, Tomcat may either be deployed as a standalone pure-Java web server or as a component in a more complex configuration in which it serves as a back-end which handles requests passed to it from a general purpose web server such as Apache
, using a connector such as mod jk
supplied by the Apache Tomcat team, or mod proxy
an optional module for the Apache HTTP Server supplied by the Apache HTTP Server team.
, a software architect at Sun Microsystems. He later helped make the project open source
and played a key role in its donation by Sun to the Apache Software Foundation. The Apache Ant
software build automation tool was developed as a side-effect of the creation of Tomcat as an open source project.
Davidson had initially hoped that the project would become open sourced and, since many open source projects had O'Reilly
books associated with them featuring an animal on the cover, he wanted to name the project after an animal. He came up with Tomcat
since he reasoned the animal represented something that could fend for itself. Although the tomcat was already in use for another O'Reilly title, his wish to see an animal cover eventually came true when O'Reilly published their Tomcat book with a snow leopard
on the cover.
A number of free Apache Tomcat resources and communities have developed in 2010 including Tomcatexpert.com, a SpringSource
sponsored community for developers and operators who are running Apache Tomcat in large-scale production environments, and MuleSoft's Apache Tomcat Resource Center, where you can find instructional guides on installing, updating, configuring, monitoring, troubleshooting and securing various versions of Tomcat.
, Apache OpenWebBeans, Apache OpenJPA
, Apache MyFaces
and others. In October 2011, the project obtained certification by Oracle Corporation
as a compatible implementation of the Java EE 6 Web Profile.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....
and servlet container developed by the Apache Software Foundation
Apache Software Foundation
The Apache Software Foundation is a non-profit corporation to support Apache software projects, including the Apache HTTP Server. The ASF was formed from the Apache Group and incorporated in Delaware, U.S., in June 1999.The Apache Software Foundation is a decentralized community of developers...
(ASF). Tomcat implements the Java Servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...
and the JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
(JSP) specifications from Oracle Corporation
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...
, and provides a "pure Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
" HTTP
Hypertext Transfer Protocol
The Hypertext Transfer Protocol is a networking protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web....
web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....
environment for Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
code to run.
Tomcat should not be confused with the Apache web server
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...
, which is a C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
implementation of an HTTP web server; these two web servers are not bundled together, although they are frequently used together as part of a server application stack
Solution stack
In computing, a solution stack is a set of software subsystems or components needed to deliver a fully functional solution, e.g. a product or service....
. Apache Tomcat includes tools for configuration and management, but can also be configured by editing XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
configuration files.
Components
Tomcat version 4.x was released with Catalina ( servlet container), Coyote (an HTTP connector) and Jasper (a JSP engine).Catalina
Catalina is a Tomcat's servlet containerWeb container
Web container is the component of a web server that interacts with the servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access rights...
. Catalina implements Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
' specifications for servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...
and JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
(JSP). In Tomcat, a Realm
Realm
A realm is a dominion of a monarch or other sovereign ruler.The Old French word reaume, modern French royaume, was the word first adopted in English; the fixed modern spelling does not appear until the beginning of the 17th century...
element represents a "database" of usernames, passwords, and roles (similar to Unix groups) assigned to those users. Different implementations of Realm allow Catalina to be integrated into environments where such authentication information is already being created and maintained, and then utilize that information to implement Container Managed Security as described in the Servlet Specification...
Coyote
Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1 protocol for the web server or application container. Coyote listens for incoming connections on a specific TCPTransmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
port on the server and forwards the request to the Tomcat Engine to process the request and send back a response to the requesting client.
Jasper
Jasper is Tomcat's JSP Engine. Tomcat 5.x uses Jasper 2, which is an implementation of the Sun MicrosystemsSun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
's JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
2.0 specification. Jasper parses JSP files to compile them into Java code as servlets (that can be handled by Catalina). At runtime, Jasper detects changes to JSP files and recompiles them.
Jasper 2
From Jasper to Jasper 2, important features were added:- JSP Tag library pooling - Each tag markup in JSP file is handled by a tag handler class. Tag handler class objects can be pooled and reused in the whole JSP servlet.
- Background JSP compilation - While recompiling modified JSP Java code, the older version is still available for server requests. The older JSP servlet is deleted once the new JSP servlet has finished being recompiled.
- Recompile JSP when included page changes - Pages can be inserted and included into a JSP at runtime. The JSP will not only be recompiled with JSP file changes but also with included page changes.
- JDT Java compiler - Jasper 2 can use the Eclipse JDT (Java Development Tools) Java compiler instead of AntApache AntApache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....
andjavac
.Javacjavac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...
Features
Tomcat 7.x implements the Servlet 3.0 and JSP 2.2 specifications. It requires Java version 1.6, although previous versions have run on Java 1.1 through 1.5. Versions 5 through 6 saw improvements in garbage collectionGarbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
, JSP parsing, performance and scalability. Native wrappers, known as "Tomcat Native", are available for Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
and Unix for platform integration.
Deployment
Experienced users can build and install Tomcat manually from source code after installing such dependencies as the Java Development KitJava Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...
and the Apache Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....
build tool.
Depending on the usage requirements, Tomcat may either be deployed as a standalone pure-Java web server or as a component in a more complex configuration in which it serves as a back-end which handles requests passed to it from a general purpose web server such as Apache
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...
, using a connector such as mod jk
Mod jk
mod_jk is the connector used to connect the Tomcat servlet container with web servers such as Apache, Netscape, iPlanet, SunOne and even IIS using the AJP protocol.In a nutshell, a web server is waiting for client HTTP requests...
supplied by the Apache Tomcat team, or mod proxy
Mod proxy
mod_proxy is an optional module for the Apache HTTP Server .This module implements a proxy/gateway/cache for Apache. It implements proxying capability for or AJP13 , FTP, CONNECT , HTTP/0.9, HTTP/1.0, and HTTP/1.1...
an optional module for the Apache HTTP Server supplied by the Apache HTTP Server team.
History
Tomcat started off as a servlet reference implementation by James Duncan DavidsonJames Duncan Davidson
James Duncan Davidson is an American photographer and former software developer. While a software engineer at Sun Microsystems , Davidson created Tomcat, a Java‐based webserver application and the Ant Java‐based build tool.He was raised in Oklahoma and Texas, and is currently self‐employed as both...
, a software architect at Sun Microsystems. He later helped make the project open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
and played a key role in its donation by Sun to the Apache Software Foundation. The Apache Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....
software build automation tool was developed as a side-effect of the creation of Tomcat as an open source project.
Davidson had initially hoped that the project would become open sourced and, since many open source projects had O'Reilly
O'Reilly Media
O'Reilly Media is an American media company established by Tim O'Reilly that publishes books and Web sites and produces conferences on computer technology topics...
books associated with them featuring an animal on the cover, he wanted to name the project after an animal. He came up with Tomcat
Tomcat
Tomcat may refer to:* A male cat, known as a tom or tommiecat* Tomcats , a 2001 comedy film* Apache Tomcat, an open-source Java Servlet Container developed by the Apache Software Foundation* Beretta Tomcat, a small .32 caliber pistol...
since he reasoned the animal represented something that could fend for itself. Although the tomcat was already in use for another O'Reilly title, his wish to see an animal cover eventually came true when O'Reilly published their Tomcat book with a snow leopard
Snow Leopard
The snow leopard is a moderately large cat native to the mountain ranges of South Asia and Central Asia...
on the cover.
Releases
Version | Release Date | Description |
---|---|---|
3.0.x. (initial release) | 1999 | Merger of donated Sun Java Web Server code and ASF and Implements Servlet 2.2 and JSP 1.1 specifications. |
3.3.2 | 2004-03-09 | Latest 3.x release. |
4.1.31 | 2004-10-11 | |
4.1.36 | 2008-03-24 | |
4.1.39 | 2008-12-03 | |
4.1.40 | 2009-06-25 | Latest 4.x release. |
5.0.0 | 2002-10-09 | |
5.0.23 | ||
5.0.24 | 2004-05-09 | |
5.0.28 | 2004-08-28 | |
5.0.30 | 2004-08-30 | Latest 5.0.x release |
5.5.0 | 2004-08-31 | |
5.5.1 | 2004-09-07 | |
5.5.4 | 2004-11-10 | |
5.5.7 | 2005-01-30 | |
5.5.9 | 2005-04-11 | |
5.5.12 | 2005-10-09 | |
5.5.15 | 2006-01-21 | |
5.5.16 | 2006-03-16 | |
5.5.17 | 2006-04-28 | |
5.5.20 | 2006-09-01 | |
5.5.23 | 2007-03 | |
5.5.25 | 2007-09 | |
5.5.26 | 2008-02 | |
5.5.27 | 2008-09-08 | |
5.5.28 | 2009-09-04 | |
5.5.30 | 2010-07-09 | |
5.5.31 | 2010-09-16 | |
5.5.32 | 2011-02-01 | |
5.5.33 | 2011-02-10 | |
5.5.34 | 2011-09-22 | Latest 5.5.x release |
6.0.0 | 2006-12-01 | |
6.0.10 | 2007-03-01 | |
6.0.13 | 2007-05-15 | |
6.0.14 | 2007-08-13 | |
6.0.16 | 2008-02-07 | |
6.0.18 | 2008-07-31 | |
6.0.20 | 2009-06-03 | |
6.0.24 | 2010-01-21 | |
6.0.26 | 2010-03-11 | |
6.0.28 | 2010-07-09 | |
6.0.29 | 2010-07-22 | |
6.0.30 | 2011-01-13 | |
6.0.32 | 2011-02-03 | |
6.0.33 | 2011-08-18 | Latest 6.x release. |
7.0.0 beta | 2010-06-29 | First Apache Tomcat release to support the Servlet 3.0 Java Servlet A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers... , JSP 2.2 JavaServer Pages JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types... , and EL 2.2 Expression Language Expression Language is a scripting language which allows access to Java components through JSP. Since JSP 2.0, it has been used inside JSP tags to separate Java code from JSP, and to allow easier access to Java components .... specifications. |
7.0.4 beta | 2010-10-21 | |
7.0.5 beta | 2010-12-01 | |
7.0.6 | 2011-01-14 | |
7.0.8 | 2011-02-05 | |
7.0.10 | 2011-03-07 | |
7.0.11 | 2011-03-11 | |
7.0.12 | 2011-04-06 | |
7.0.14 | 2011-05-12 | |
7.0.16 | 2011-06-17 | |
7.0.19 | 2011-07-19 | |
7.0.20 | 2011-08-11 | Fourth stable version. |
7.0.21 | 2011-09-01 | |
7.0.22 | 2011-10-01 | Current stable version. |
Communities
Apache software is built in a community process, with both user and developer mailing lists. The developer list is where discussion on building and testing the next release takes place, while the user list is where users can discuss their problems with the developers and other users.A number of free Apache Tomcat resources and communities have developed in 2010 including Tomcatexpert.com, a SpringSource
SpringSource
SpringSource is a division of VMware that provides a suite of software products that accelerate the entire enterprise Java application life cycle of build, run, and manage. SpringSource employs open source leaders who created and drive innovation for Spring, a programming model for enterprise Java...
sponsored community for developers and operators who are running Apache Tomcat in large-scale production environments, and MuleSoft's Apache Tomcat Resource Center, where you can find instructional guides on installing, updating, configuring, monitoring, troubleshooting and securing various versions of Tomcat.
Apache TomEE
Apache TomEE is the Java Enterprise Edition of Apache Tomcat (Tomcat + Java EE = TomEE) that combines several Java enterprise projects including Apache OpenEJBApache OpenEJB
OpenEJB is an open source, embeddable and lightweight EJB Container System and EJB Server, released under the Apache 2.0 License. OpenEJB has been integrated with Java EE application servers such as Geronimo, and WebObjects.-History:...
, Apache OpenWebBeans, Apache OpenJPA
Apache OpenJPA
OpenJPA is an open source implementation of the Java Persistence API specification. It is an object-relational mapping solution for the Java language, which simplifies storing objects in databases. It is open source software distributed under the Apache 2.0 Licence.- History :Kodo, a Java Data...
, Apache MyFaces
Apache MyFaces
Apache MyFaces is an Apache Software Foundation project that creates and maintains an open-source JavaServer Faces implementation, along with several libraries of JSF components that can be deployed on the core implementation...
and others. In October 2011, the project obtained certification by Oracle Corporation
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...
as a compatible implementation of the Java EE 6 Web Profile.
See also
- Apache Geronimo, an application server that can use Tomcat as its web container
- Resin ServerResin ServerResin is a software product, a web server and Java application server from Caucho Technology. Resin is provided in two versions, Resin Professional and Resin Open Source ....
Application Server from Caucho Technology - Comparison of web serversComparison of web server software-Overview:-Features:- Operating system support :...
- JBossJBossJBoss Application Server is an open-source Java EE-based application server. An important distinction for this class of software is that it not only implements a server that runs on Java, but it actually implements the Java EE part of Java...
Application Server - Jetty (web server)Jetty (web server)Jetty is a pure Java-based HTTP client/server, WebSocket client/server and servlet container developed as a free and open source project as part of the Eclipse Foundation...
- JOnASJOnASJOnAS is an open-source implementation of the Java EE application server specification, developed and hosted by the ObjectWeb consortium ....
, application server that can use Tomcat as its web container - OpenEJB, can be added to Tomcat to turn it into a JavaEE server
- SpringSource tc Server, a commercially-supported enterprise Tomcat server from SpringSourceSpringSourceSpringSource is a division of VMware that provides a suite of software products that accelerate the entire enterprise Java application life cycle of build, run, and manage. SpringSource employs open source leaders who created and drive innovation for Spring, a programming model for enterprise Java...